$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'")
);
Run Code Online (Sandbox Code Playgroud)
报告:
未定义的类常量'MYSQL_ATTR_INIT_COMMAND'
它被重命名了吗?
Sk8*_*ter 47
我只是有同样的错误(使用PHP 5.2.6),而我所要做的就是启用特定于MySQL的PDO驱动程序:
在您的php.ini文件中,您应该具有以下行(取消注释):
extension=php_pdo_mysql.dll 在Windows上extension=php_pdo_mysql.so 在Linux/Mac上php.ini在文本编辑器中打开
C:\Program Files (x86)\PHP\v5.X\php.ini用你安装的版本代替v5.x)或者C:\Windows\php.ini等等./etc/php5/apache2/php.ini(例如,这是在Ubuntu路径)或/etc/php5/cli/php.ini,/etc/php5/cgi/php.ini等php --ini | find /i "Loaded" 在Windows命令提示符或php --ini | grep "Loaded" 在Linux/Mac终端中phpinfo(),并查找"加载配置文件"行并从以下行的开头删除分号(取消注释):
;extension=php_pdo_mysql.dll 在Windows上
;extension=php_pdo_mysql.so在Linux/Mac上php.ini:
extension=php_pdo_mysql.dll 在Windows上extension=php_pdo_mysql.so在Linux/Mac上您可能需要重新启动Web服务器.
这解决了我的问题.
Sve*_*rre 28
当我还没有安装时,我在debian6上得到了同样的错误php5-mysql.
所以我安装了它,然后重新启动了apache2
apt-get install php5-mysql
/etc/init.d/apache2 restart
Run Code Online (Sandbox Code Playgroud)
然后错误就消失了.
如果你在Ubuntu上有相同的错误,而不是:
/etc/init.d/apache2 restart
Run Code Online (Sandbox Code Playgroud)
类型:
service apache2 restart
Run Code Online (Sandbox Code Playgroud)
对于 Centos,我缺少 php-mysql 库:
yum install php-mysql
service httpd restart
Run Code Online (Sandbox Code Playgroud)
php.ini 中无需启用任何扩展,默认加载。
小智 5
对于后来出现的任何人,就像我一样,看到这个......
我收到了同样的错误,因为我的 php.ini 文件中没有“启用”扩展名。我想如果您最近升级了 php 版本并且没有正确更新 php.ini 文件,您也可能会收到此错误。
如果您在升级 php 版本后不久收到此错误,以下信息可能对您有所帮助:
PHP 7.4 稍微改变了 php.ini 文件中的语法。现在,要启用 mysql pdo,请确保extension=pdo_mysql在 php.ini 文件中取消注释。(默认 php.ini 设置中的第 931 行)
该行曾经是:
extension=php_pdo_mysql.dll 在 Windows 上
extension=php_pdo_mysql.so 在 Linux/Mac 上
正如 Sk8erPeter 指出的那样。但是 .dll 和 .so 结尾将被弃用,因此最好的做法是开始摆脱这些结尾并仅使用extension=<ext>
以下是从“动态扩展”下的 php 7.4 zip 下载的默认 php.ini-production 文件中提取的:
注意:以前的 PHP 版本中使用的语法('extension=.so' 和 'extension='php_.dll')由于遗留原因受到支持,并且可能会在未来的 PHP 主要版本中被弃用。因此,如果可能,请移至新的 (
extension=<ext>) 语法。