php - 未定义类常量 'MYSQL_ATTR_INIT_COMMAND' 与 pdo

标签 php pdo

$db = new PDO('mysql:dbname=xnews;host=localhost;port=' . $LOCAL_DB_PORT, 
          $LOCAL_DB_USER, 
          $LOCAL_DB_PASS, 
          array(PDO::MYSQL_ATTR_INIT_COMMAND =>  "SET NAMES 'UTF8'")
      );

报告:

Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'

改名了吗?

最佳答案

我刚刚遇到了同样的错误(使用 PHP 5.2.6),我所要做的就是 enable the MySQL-specific PDO driver :

长话短说

在您的 php.ini 文件中,您应该有以下行(未注释):

  • extension=php_pdo_mysql.dll 在 Windows 上
  • extension=php_pdo_mysql.so 在 Linux/Mac 上

更长的解释:

  1. 在文本编辑器中打开 php.ini

    • 例如它在 Windows 上的默认路径:C:\Program Files (x86)\PHP\v5.X\php.ini(用您安装的版本替换 v5.x)或 C:\Windows\php.ini
    • 或在 Linux 上:/etc/php5/apache2/php.ini(例如,这是 Ubuntu 上的路径)或 /etc/php5/cli/php.ini /etc/php5/cgi/php.ini
    • you can get to know where it is like this :
      • php --ini |在 Windows 命令提示符中找到/i "Loaded"
      • php --ini | Linux/Mac 终端中的 grep "Loaded"
      • 使用 phpinfo(),并寻找行 “Loaded Configuration File”
  2. 从下一行的开头删除分号(取消注释):

    • ;extension=php_pdo_mysql.dll 在 Windows 上
      • ;extension=php_pdo_mysql.so 在 Linux/Mac 上
    • 当然,如果这一行不存在,你应该粘贴
    • 因此作为结果,预期的行在 php.ini 中看起来像这样:
      • extension=php_pdo_mysql.dll 在 Windows 上
      • 或在 Linux/Mac 上 extension=php_pdo_mysql.so
  3. 您可能需要重新启动您的网络服务器。

这解决了我的问题。

关于php - 未定义类常量 'MYSQL_ATTR_INIT_COMMAND' 与 pdo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2424343/

相关文章:

php - 分解逗号和管道上的字符串以创建两个数组

php - 使用php pdo向数据库中插入记录

php - MySQL 全文连字符和大括号返回错误(原为 : PDO prepared statement not doing its job?)

php - 如何从 MySQL 表中对大型多维数组进行排序

php - 无法获取 URL 中的用户名

php - 从给定的搜索关键字获取youtube视频

php - Laravel 查询 : Php implode array string values

php - 从开发的角度来看,主要内容管理系统的优点/缺点是什么?

php - 获取上个月的日期范围

php - Phalcon PhP - 如何使用参数在 Controller 内执行查询