未定义的类常量“MYSQL_ATTR_INIT_COMMAND”与 pdo

2022-08-30 11:17:06
$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'")
      );

报告:

未定义的类常量“MYSQL_ATTR_INIT_COMMAND”

是否已重命名?


答案 1

我刚刚遇到了同样的错误(PHP 5.2.6),我所要做的就是启用MySQL特定的PDO驱动程序

TL;DR

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

  • extension=php_pdo_mysql.dll在视窗上
  • 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 等。
    • 或者你可以知道它在哪里,就像这样
      • php --ini | Windows 命令提示符或
      • php --ini | grep “Loaded” in Linux/Mac 终端
      • 使用 phpinfo(),并查找“加载的配置文件”
  2. 并从以下行的开头删除分号(以取消注释它):

    • ;extension=php_pdo_mysql.dll在视窗上
      • OR 在 Linux/Mac 上;extension=php_pdo_mysql.so
    • 当然,如果这行不存在,你应该粘贴它
    • 因此,预期的行将如下所示:php.ini
      • extension=php_pdo_mysql.dll在视窗上
      • OR 在 Linux/Mac 上extension=php_pdo_mysql.so
  3. 您可能需要重新启动 Web 服务器。

这解决了我的问题。


答案 2

我在 debian6 上得到了同样的错误,当时我还没有安装 .php5-mysql

所以我安装了它,然后重新启动了apache2

apt-get install php5-mysql
/etc/init.d/apache2 restart

然后错误消失了。

如果您在 Ubuntu 上遇到相同的错误,而不是:

/etc/init.d/apache2 restart  

类型:

service apache2 restart

推荐