我有一个连接到远程数据库的配置文件,但是我一直收到一个我不知道如何解决的错误。在早期版本中,它本来是一个bug,但我认为它将由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扩展。
答案 0 :(得分:3)
尝试编辑你的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
答案 1 :(得分:0)
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');
如果脚本甚至无法运行,...将无法执行。
答案 2 :(得分:0)
sudo apt-get install php5-mysql
sudo php5enmod pdo
sudo php5enmod pdo_mysql