Я пишу функцию регистрации пользователя в PHP PDO, и я обнаружил, что мой запрос будет работать нормально, только если он написан так:
<?php
$dbHost="localhost";
$dbName="project";
$dbUser="admin";
$dbPassword="abcd";
$dbh=new PDO("mysql:host=$dbHost;dbName=$dbName", $dbUser, $dbPassword);
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$query=$dbh->prepare("INSERT INTO project.users (userName, userEmail) VALUES (?,?)");
.....
С другой стороны, он не запустится, если я напишу:
...
$query=$dbh->prepare("INSERT INTO users (userName, userEmail) VALUES (?,?)");
...
В этом случае я получаю следующее сообщение об ошибке:
Неустранимая ошибка: необработанное исключение «PDOException» с сообщением «SQLSTATE [3D000]: неверное имя каталога: 1046 База данных не выбрана» в C: \ wamp \ www \ Tests \ Test03 \ Index.php: 11 Трассировка стека: # 0 C: \ wamp \ www \ Tests \ Test03 \ Index.php (11): PDOStatement-> execute () # 1 {main} в C: \ wamp \ www \ Tests \ Test03 \ Index.php в строке 11
Почему мне нужно уточнить project.users
? Почему недостаточно ввести имя таблицы, учитывая, что само имя БД уже находится в объекте PDO?
Спасибо!
JDelage
ОБНОВЛЕНИЕ Пожалуйста, смотрите принятый ответ ниже. Замена dbName=$dbName
на dbname=$dbName
решает эту проблему.