$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」
名前が変更されましたか?
私はちょうど同じエラーがありました(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コマンドプロンプトORphp --ini | grep "Loaded"
_ Linux/Macターミナルphpinfo()
を使用して、行 "Loaded Configuration File"を探しますそして、次の行の先頭からセミコロンを削除します(コメントを外します):
;extension=php_pdo_mysql.dll
_ Windowsの場合;extension=php_pdo_mysql.so
_php.ini
_:のようになりますextension=php_pdo_mysql.dll
_ Windowsの場合extension=php_pdo_mysql.so
_Webサーバーの再起動が必要になる場合があります。
これで私の問題は解決しました。
まだインストールしていないときに、debian6で同じエラーが発生しましたphp5-mysql
。
だから私はそれをインストールし、Apache2を再起動しました
apt-get install php5-mysql
/etc/init.d/Apache2 restart
その後、エラーはなくなりました。
Ubuntuで次の代わりに同じエラーが発生する場合:
/etc/init.d/Apache2 restart
タイプ:
service Apache2 restart
mysqlndドライバーを使用している場合にのみ利用できるようです。
それを表す整数に置き換えてみてください。 1002、私が間違っていなければ。
Centosでは、php-mysqlライブラリがありませんでした:
yum install php-mysql
service httpd restart
Php.iniで拡張機能を有効にする必要はありません。デフォルトでロードされます。
私にとっては、MySQL PDOが欠落していたため、PHPで--with-pdo-mysql
オプション、インストールし、Apacheを再起動しましたが、すべて機能していました
PHP 5.2で試したところ、その定数が存在するようです:
var_dump(PDO::MYSQL_ATTR_INIT_COMMAND);
私に与えます:
int 1002
しかし、PHP 5.3にはバグがあり、この定数がもう存在しないか、少なくともmysqlndドライバーが使用されていない場合(デフォルトで設定されているものです)
このバグレポート で提案されている一時的な解決策は、定数の代わりに整数1002
値を直接使用することです...
しかし、できるだけ早く定数を使用することに戻る必要があることに注意してください-これによりコードが理解しやすくなります。
接続を開いた直後に1002に置き換えるか、初期化クエリを発行してみてください。
これは、MYSQL_ATTR_INIT_COMMANDが利用できないWindowsでのPHP 5.3.0バグによるものです。PHPバグレポートは次のとおりです。
http://bugs.php.net/bug.php?id=47224
これが発生している場合は、PHP 5.3.1以降のバージョンを使用するバージョンにWAMP製品を更新してください。
Int値1002
を使用すると、PHP 5.3.0:
public static function createDB() {
$dbHost="localhost";
$dbName="project";
$dbUser="admin";
$dbPassword="whatever";
$dbOptions=array(1002 => 'SET NAMES utf8',);
return new DB($dbHost, $dbName, $dbUser, $dbPassword,$dbOptions);
}
function createConnexion() {
return new PDO(
"mysql:Host=$this->dbHost;dbname=$this->dbName",
$this->dbUser,
$this->dbPassword,
$this->dbOptions);
}
今朝このエラーが発生しました。Fedora14を新規インストールし、ローカルプロジェクトをオンラインに戻そうとしました。 php-mysqlがありませんでした。yumでインストールしましたが、エラーはなくなりました。