Я пишу функцию регистрации пользователя в 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
UPDATE См. Принятый ответ ниже. Замена dbName = $ dbName
на dbname = $ dbName
решает эту проблему.