【问题标题】:Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' in Undefined class constant (PHP 5.5.3)未定义类常量 (PHP 5.5.3) 中的未定义类常量“MYSQL_ATTR_INIT_COMMAND”
【发布时间】:2014-04-14 12:06:44
【问题描述】:

我有一个连接到远程数据库的配置文件,但是我不断收到一个我不知道如何修复的错误。在早期版本中,它本来是一个错误,但我认为它会在 5.5.3 中修复。

<?php
error_reporting(E_ALL);
ini_set('display_errors', 'on');

$host = "localhost";
$dbname = "registration";
$username = "databaseEditor";
$password = "yolo10";

// 1002 = MYSQL_ATTR_INIT_COMMAND
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');

try
{
    $db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username$
}
catch(PDOException $ex)
{
    die("Failed to connect to the database: " . $ex->getMessage());
}

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

header('Content-Type: text/html; charset=utf-8');

echo "File works";
?>

我不断收到错误"Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'"。我尝试使用 1002 而不是 'MYSQL_ATTR_INIT_COMMAND' 但后来我得到了错误 "syntax error, unexpected '1002' (T_LNUMBER)" 而我也安装了最新的 php-mysql 扩展。

【问题讨论】:

  • 从您给出的示例中,我看不到 $db 的完整声明,您可以编辑它吗?
  • 完成,请原谅幼稚的密码。
  • phpinfo() 显示了关于 PDO 的内容??
  • 你没有得到我,你可以留下用户名并传递空,更新你有$db = new PDO...的行,因为我们看不到完整的行

标签: php mysql


【解决方案1】:

尝试编辑您的 php.ini:

在 Windows 服务器上,您可以在 php.ini 中添加以下行

 extension=php_pdo.dll
 extension=php_pdo_mysql.dll

在 Linux 服务器上,您可以使用以下选项编译 php --with-pdo-mysql

在您的 php.ini 中,添加以下行

 extension=pdo.so
 extension=pdo_mysql.so

【讨论】:

  • 如果您觉得这个答案有助于解决您的问题,请不要忘记将其标记为正确...干杯 ;)
【解决方案2】:

在 Ubuntu 14.04 上

安装php5-mysql包

sudo apt-get install php5-mysql

如果上面已经安装了

sudo php5enmod pdo

sudo php5enmod pdo_mysql

重启网络服务器

【讨论】:

    【解决方案3】:

    PDO::MYSQL_ATTR_INIT_COMMAND 常量由 PDO 扩展的 MySQL 驱动程序定义。您很可能忘记安装。

    安装适当的扩展程序后,您就可以忘记PDO::MYSQL_ATTR_INIT_COMMAND。设置连接编码的正确方法是你已经做的——构造函数中的 DSN 参数:

    $db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username$
                                                       ^^^^^^^^^^^^
    

    最后但同样重要的是,您的代码似乎有很多语法错误。您需要在 php.ini 文件中启用完整的错误报告,因为这些行:

    error_reporting(E_ALL);
    ini_set('display_errors', 'on');
    

    ...如果脚本无法运行,则不会执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-25
      • 2011-01-26
      • 2016-10-06
      • 2013-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多