PDO -> 序章

Posted by muchag | PHP | 2010-05-28 (金) 23:43:34

これまでネイティブ関数の mysql で DB 操作をしてきたのだが
そろそろ何か使ってみようと思い立った。

PEAR::DB が第1候補だったのだが
残念ながら動作が相当鈍いらしい。

PDO

そこで以前挑戦して果てた PDO を思い出したわけだが
あれこれ見ていると、実はもっといっぱいあって
mysqli、MDB、MDB2、adoなんとか・・・まぁ 色々あるらしい・・・。

でもまぁ、ZF が使っているらしいし
一般的らしい PDO にすることにした。
PHP5.2 より標準装備らしい。

さくらインターネット

ところが、PDO を検索するうちに
さくらでは PDO が使えないとか。
ええええええ!

あれ?! 私は使える・・・。
ん??? 使える。
あれれ?
そういえば、はるか昔にトライしたから
それが残っているのかしら・・・。

ま、使えるんだからいっか♪

文字化け対策

更に大きな問題ががが。
前に 文字化け対策 で書いた
SET NAMES utf8
これを使わないと、どうしても文字化けする><
あれこれググっても、PDO の方法は1つ しかなく、
そのやり方でも文字化けした。
何せさくらでは PDO の my.cnf はいじれない。

ん~、でもまぁ せっかくだから
どうせ小さいサイトだし、ということで
mb_convert_encoding を毎回使うことでひとまず対応してみる。

さて、1から勉強しないといけないのだ。
 

2010-07-08 追記

mb_convert_encoding だと「波ダッシュ問題」が残る。

ん~ どうしても SET NAMES utf8 を使わないとだめなのかなぁ。
 

2015-02-07 追記

PDO では、PHP 5.3.6 から、DSN で文字コードを指定できるようになったとのこと。
 
php:PDO_MYSQL DSN

  1. <?php
  2. $dsn = 'mysql:host=localhost;dbname=testdb';
  3. $username = 'username';
  4. $password = 'password';
  5. $options = array(
  6.     PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
  7. );
  8.  
  9. $dbh = new PDO($dsn, $username, $password, $options);
  10. ?>

 
こんな書き方も!

  1. <?php
  2. $pdo = new PDO("mysql:host=localhost;dbname=world;charset=utf8", 'my_user', 'my_pass');
  3. ?>

php:文字セット

こちらの方が、スマートだね~♪
こちらの書き方で、PHP 5.4.7 環境にて、文字化けが直ることを確認。

PHP | 2010-05-28 (金) 23:43:34 |

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment