PDO_mysql驱动程序不起作用

时间:2013-09-07 14:27:26

标签: php pdo

我在Windows 8,XAMPP 1.8.1,PHP 5.4.7和MySQL上使用Apache服务器。 我决定将我的代码转换为PDO。

检查我的 phpinfo()似乎启用了MySQL的PDO驱动程序,但我仍然继续收到“找不到驱动程序”错误。

以下是代码:

<?php 
//connect to database

$config['db'] = array(
    'host'           => 'localhost',
    'username'       => 'root',
    'password'       => '',
    'dbname'         => 'x'
    );

$db = new PDO("
    pdo_mysql:host=     " .$config['db']['host']. ";
    dbname=             " .$config['db']['dbname']. ";
    username=           " .$config['db']['username'].";
    password=           " .$config['db']['password']."
    ");
?>

错误:

致命错误:未捕获的异常'PDOException',消息'找不到驱动程序'

有什么建议吗?

4 个答案:

答案 0 :(得分:5)

我建议您参考manual page并从那里获取正确的 DSN字符串示例

答案 1 :(得分:1)

如果您将DSN前缀从pdo_mysql更改为mysql,会发生什么?

答案 2 :(得分:1)

正如手册所说link

您应该以这种方式格式化您的dsn: DRIVER:host=YOURHOST;dbname=YOURDB

同样要创建实例,您应该这样做:$db = new PDO($dsn, $username, $password)

另外我忘了说(正如其他用户指出的那样)你的DRIVER是“mysql”而不是pdo_mysql

答案 3 :(得分:0)

最后,代码存在2个问题:

<强> 1。 pdo_mysql - &gt; MySQL的

<强> 2。用户名和密码应作为变量传递,而不是作为字符串传递

正确的代码是:

$config['db'] = array(
    'host'           => 'localhost',
    'username'       => 'root',
    'password'       => '',
    'dbname'         => 'x'
    );

$db = new PDO (
    "mysql:host=".$config['db']['host'].";dbname=".$config['db']['dbname']."",
    $config['db']['username'], 
    $config['db']['password'] 
);