Записывайте запросы PHP PDO как `dbName`.`tableName` вместо` tableName` - почему?

Я пишу функцию регистрации пользователя в 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 решает эту проблему.

5
задан JDelage 10 June 2011 в 00:14
поделиться