使用PDO创建MySQL表时出错

时间:2015-02-02 16:31:29

标签: php mysql database pdo

我刚刚创建了一个名为" test2"的MySQL数据库。使用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(); 
        }

有人可以帮我找到错误的位置吗?

1 个答案:

答案 0 :(得分:0)

尽管PDO MySQL DSN string documentation并不是关于空格的,但经验告诉我DSN字符串中不允许使用空格。由于您有dbname = test2dbname实际上并未被解析和使用,因此PDO抱怨未选择任何数据库。您的DSN应如下所示,key=value对之间没有空格:

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

您在评论中提到先前的连接已成功,您可以发出CREATE DATABASE语句。这只是因为默认主机localhost$serveur变量设置为localhost的巧合。 PDO可能无法解析DSN中的host=参数,而是使用localhost作为您的用户凭据的默认连接。由于CREATE DATABASE语句不需要选择数据库,因此dbname=无关紧要。

相关问题