[英]Error when creating MySQL Table with PDO
我剛剛使用PDO創建了一個名為“ test2”的MySQL數據庫。 現在,我正在嘗試創建一個名為“ 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();
}
有人可以幫我找到錯誤的地方嗎?
盡管PDO MySQL DSN字符串文檔並非專門針對空格,但經驗告訴我,DSN字符串中不允許使用空格。 由於您具有dbname = test2
,因此實際上並未解析和使用該dbname
,因此PDO抱怨未選擇任何數據庫。 您的DSN如下所示, key=value
對之間沒有空格:
"mysql:host=$serveur;dbname=test2"
您在注釋中提到先前的連接成功,並且您可以發出CREATE DATABASE
語句。 這僅是由於默認主機為localhost
以及您的$serveur
變量也設置為localhost
的巧合。 PDO可能沒有從DSN解析host=
參數,而是使用localhost
作為具有用戶憑據的默認連接。 由於CREATE DATABASE
語句不需要選擇數據庫,因此dbname=
無關緊要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.