PHP PDO-код для вставки в MySQL db не выполняется

У меня возникают трудности с поиском некоторых простых PHP-кода для вставки записи в таблицу MySQL.

Этот код, введенный непосредственно в WAMP, отлично работает:

INSERT INTO `users` (`userName`,`userEmail`) VALUES ('orange','orange@gmail.com') 

Этот код PHP не работает:

 <?php $dbHost="localhost"; $dbName="project"; $dbUser="admin"; $dbPassword="abcd"; $dbh=new PDO("mysql:host=$dbHost;dbName=$dbName", $dbUser, $dbPassword); print_r($dbh); echo "</br>"; print_r($dbh->errorInfo()); $query=$dbh->prepare("INSERT INTO users (userName, userEmail) VALUES (?,?)"); echo "</br>"; print_r(var_dump($query->errorInfo())); echo "</br>"; print_r($query->errorCode()); echo "</br>"; print_r($dbh->errorInfo()); $query->bindValue(1, 'apple'); echo "</br>"; print_r(var_dump($query->errorInfo())); echo "</br>"; print_r($query->errorCode()); echo "</br>"; print_r($dbh->errorInfo()); $query->bindValue(2, 'apple@gmail.com'); echo "</br>"; print_r(var_dump($query->errorInfo())); echo "</br>"; print_r($query->errorCode()); echo "</br>"; print_r($dbh->errorInfo()); $inserted=$query->execute(); //True if succesful, False if not. echo "</br>"; print_r(var_dump($query->errorInfo())); echo "</br>"; print_r($query->errorCode()); echo "</br>"; print_r($dbh->errorInfo()); echo "</br>"; if ($inserted){print_r("true");}else{print_r("false");}; ?> 

То, что я получаю при выполнении страницы, – это следующая распечатка:

 PDO Object ( ) Array ( [0] => [1] => [2] => ) array(3) { [0]=> string(0) "" [1]=> NULL [2]=> NULL } Array ( [0] => 00000 [1] => [2] => ) array(3) { [0]=> string(0) "" [1]=> NULL [2]=> NULL } Array ( [0] => 00000 [1] => [2] => ) array(3) { [0]=> string(0) "" [1]=> NULL [2]=> NULL } Array ( [0] => 00000 [1] => [2] => ) array(3) { [0]=> string(5) "3D000" [1]=> int(1046) [2]=> string(20) "No database selected" } 3D000 Array ( [0] => 00000 [1] => [2] => ) false 

Запись не вставлена ​​в db. Что я делаю неправильно? Я не уверен, что я должен видеть в print_r, я предоставляю им помощь для респондентов.

Спасибо,

JDelage

отредактировано – я добавил, что print_r рекомендуется в комментариях.

Вот что я вижу в WAMP:

http://img.ruphp.com/php/project_sch.jpg

Сообщение об ошибке, похоже, указывает на то, что вы правильно подключились к БД, но база данных проекта не выбрана.

Чтобы убедиться, что он пытается исправить правильный DSN, я бы попытался изменить строку соединения, чтобы содержать значения напрямую, а не переменные, то есть:

 'mysql:host=localhost;dbname=project' 

Это не должно меняться, но стоит проверить.

Если это не сработает, и поскольку вы, кажется, можете подключиться к MySQL, обходным решением может быть включение имени базы данных в качестве части запроса. Таким образом, ваш запрос выше:

 $query=$dbh->prepare("INSERT INTO project.users (userName, userEmail) VALUES (?,?)"); 

Очень странная проблема, кажется, что вам нужно ввести dbname в строчные буквы, чтобы он правильно подключился к базе данных.

Так должно быть:

 mysql:host=$dbHost;dbname=$dbName