簡體   English   中英

使用PDO創建MySQL表時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM