チップス
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 というクラス定数が存在しない)。
いろいろ色々あるんですよねぇ。