チップス

MySQLに接続する mysqlとmysqliそれからPDO…..


PHPでMySQLを操作するAPIは「mysqli」か「PDO」を使うといいよという話」という投稿をgoogleで検索。
 
なんだか mysqli か PDO を使って接続するほうが良いと書いてありました。
 

比較項目 mysql mysqli PDO
どのバージョンから使えるか 2.0 5.0 5.1
開発状況 保守対応のみ 進行中 進行中
ライフサイクル 将来的に廃止 活動中 活動中
オブジェクト指向開発できるか ×
手続き型で開発できるか ×

 
PHP 5.3.6より前のバージョンの PDO MySQL で charset を指定する
 

 '/etc/my.cnf',
); 
$pdo = new PDO(
    'mysql:host=yourhost;dbname=yourdb',
    'user', 'password', $options
);

 
/etc/my.cnf

[client]
default-character-set = utf8

 

この方法ならPDOの中の libmysql に charset を知らせることが出来る。SET NAMES だとMySQLサーバには charset が伝わるけれどクライアント側は latin1 のままなのでエスケープ処理で問題が出る可能性があります(と、思ったけれどプリペアドステートメントなら大丈夫?)。

なお、この方法は PDO の中が libmysql でなければ使えません。Linux 版のビルドでは大抵大丈夫だと思いますが、Windows 版のビルドでは PDO の中身が mysqlnd なのでこの方法は使えません(PDO::MYSQL_ATTR_READ_DEFAULT_FILE というクラス定数が存在しない)。

 
いろいろ色々あるんですよねぇ。


   チップス