PDO for MySql


1MB以上のblob型にbindColumnしても1MBで切れる

MYSQL_ATTR_MAX_BUFFER_SIZEがデフォルトでは1MBになっているらしいのでインスタンス生成時に指定しておく。

$db = new PDO("mysql:host=$dbhost; dbname=$dbname", DBUSER, DBPASSWD, array(PDO::MYSQL_ATTR_MAX_BUFFER_SIZE=>1024*1024*10));

クエリログをみてもプリぺーアドステートメントが実行されてないぞ?

デフォルトだとPHP側でプリペアードステートメントをエミュレートしている。
サーバーサイドプリペアードステートメントを使うには、

$dbh = new PDO('mysql:host=localhost;dbname=sandbox;charset=cp932', 'sandbox', 'sandbox', array(
   PDO::ATTR_EMULATE_PREPARES => false,
));

エラーが起きても例外を投げてくれないぞ?

デフォルトだと投げない設定になっている模様。

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

持続的接続ってなんぞや?

最終更新:2011年01月18日 01:35