トップ «前の日記(2006-05-24) 最新 次の日記(2006-05-26)» 編集

2002|01|02|03|04|05|06|07|08|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|02|03|04|07|

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関連のドキュメントには書かれていないっぽいけど、これはバグなのか仕様なのかどっちだろう

Tags: PHP MySQL PDO
本日のTrackBacks(全1件) [TrackBack URL: http://tdiary.ishinao.net/tb.rb/20060525]

PDOを使って、よくあるコードを書いていた。 ?php /* 前略 */ pub