0

我在 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

4 回答 4

5

让我建议您参考手册页并从那里获取正确的DSN 字符串示例

于 2013-09-07T14:36:32.333 回答
1

正如手册所说的链接

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

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

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

于 2013-09-07T15:16:19.727 回答
1

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

于 2013-09-07T15:02:58.407 回答
0

最后代码有2个问题:

1. pdo_mysql -> 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'] 
);
于 2013-09-07T15:53:17.107 回答