【问题标题】:PDO_mysql driver doesn't workPDO_mysql 驱动程序不起作用
【发布时间】:2013-09-07 14:27:26
【问题描述】:

我在 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”和消息“找不到驱动程序”

有什么建议吗?

【问题讨论】:

  • 让我建议您在您的问题中发布您尝试过的确切代码以及您得到的确切错误消息。为了能够给你一些建议。
  • 因为是驱动问题,我认为代码无关紧要,但我现在添加了它,希望对您有所帮助。
  • 这不可能是驱动问题,因为 phpinfo() 说驱动已安装
  • 我很确定这是您格式化 DSN 字符串的方式。

标签: php pdo


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 它显然有效。虽然这应该是评论,而不是回答。
    • @YourCommonSense “这不是锅把水壶叫黑吗。”你经常提出类似的答案(Just like yours)。虽然它的措辞可能不同,但它导致了一个实际的“答案/解决方案”,这就是“重要”。
    • @Fred-ii- 我从不在答案中问“发生了什么”。要么我已经知道发生了什么,要么我根本不回答。
    • @YourCommonSense 是的,我同意,这就是为什么我编辑了我的评论并添加了“虽然它的措辞可能不同”。
    【解决方案3】:

    如手册所说link

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

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

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

    【讨论】:

    • 其实完全不一样,用户在DSN中同时包含用户名和密码,但必须作为参数传递。
    • 对不起。我忽略了这一点。
    【解决方案4】:

    最后代码有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'] 
    );
    

    【讨论】:

      猜你喜欢
      • 2011-08-25
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      • 2018-08-27
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多