Ошибка при создании таблицы MySQL с PDO

Я только что создал базу данных MySQL с именем «test2», используя PDO. Теперь я пытаюсь создать таблицу с именем «Visiteurs», но, похоже, мой код работает неправильно.

Эхо-сигнал ошибки: «SQLSTATE [3D000]: Недопустимое имя каталога: 1046 Не выбрано ни одной базы данных (что не так, я думаю), и мой код выглядит следующим образом:

$serveur = "localhost"; $login = "root"; $pass = "root"; try{ $conn = new PDO("mysql:host = $serveur; dbname = test2", $login, $pass); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $codesql = "CREATE TABLE Visiteurs ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nom VARCHAR(50) NOT NULL, prenom VARCHAR(50) NOT NULL, email VARCHAR(70) )"; $conn->exec($codesql); echo 'Table "Visiteurs" créée !'; } catch(PDOException $e) { echo 'Echec : ' . $e->getMessage(); } 

Может ли кто-нибудь помочь мне найти, где ошибка? Спасибо!

Related of "Ошибка при создании таблицы MySQL с PDO"

Несмотря на то, что в строковой документации PDO MySQL DSN нет специфики в отношении пробелов, опыт говорит мне, что в строке DSN не разрешено пропуски. Поскольку у вас есть dbname = test2 , имя dbname = test2 не анализируется и не используется, поэтому PDO жалуется, что база данных не выбрана. Ваш DSN должен выглядеть следующим образом, без пробелов между парами key=value :

 "mysql:host=$serveur;dbname=test2" 

Вы упомянули в комментариях, что предыдущее соединение сработало, и вы смогли выпустить инструкцию CREATE DATABASE . Это произошло только из-за совпадения хоста по умолчанию, который является localhost а ваша переменная $serveur установлена ​​на localhost . PDO, вероятно, не проанализировал параметр host= из DSN, но вместо этого использовал localhost как соединение по умолчанию с вашими учетными данными пользователя. Поскольку для оператора CREATE DATABASE нет необходимости выбирать базу данных, имя dbname= не имеет значения.