2006-05-25 [長年日記]
_ pdo-mysqlのbindの挙動の違い
Windows/PHP 5.1.4/MySQL 4.1.7(※$dbはpdoMysqlを使ったZend_Db_Adapterだけど、内部の処理はほぼそのままPDOを叩いているだけ)では、
$sql = 'select id from bar where foo_id = :id';
$result = $db->query($sql, array('id' => 1, 'test' => 'test'));
みたいなコードが動くのに、Fedora Core3/PHP5.1.4/MySQL 4.1.19では、「SQLSTATE[HY093]: Invalid parameter number: parameter was not defined」が出て動かない。これを、
$sql = 'select id from bar where foo_id = :id';
$result = $db->query($sql, array('id' => 1));
に変えると動く。
つまり、プレースホルダーで指定されたパラメータ以外をbindする値として渡すと、エラーが出るらしい。この辺の仕様ってPHPのPDO関連のドキュメントには書かれていないっぽいけど、これはバグなのか仕様なのかどっちだろう
[ツッコミを入れる]
本日のTrackBacks(全1件)
[TrackBack URL: http://tdiary.ishinao.net/tb.rb/20060525]
PDOを使って、よくあるコードを書いていた。 ?php /* 前略 */ pub


