揮発性のメモ2

http://d.hatena.ne.jp/iww/

PDOのLIMIT句が動作しない

PHP 5.2.1〜5.2.5 では、LIMIT句の値をなんかバインドとかすると動作しない そうです。

  $sth = $dbh->prepare( 'SELECT * FROM some_table LIMIT :start, :limit' );
  $sth->execute ( array ('start'=>0, 'limit'=>10 ) );

これが

  SELECT * FROM some_table LIMIT '0', '10'

こんなんなっちゃうのでエラーになります、という話。

  $start = 0;
  $limit = 10;
  $sth = $dbh->prepare( "SELECT * FROM some_table LIMIT $start, $limit" );
  $sth->execute ();

*1
今のところ、こんなふうに書くしかないらしい。
PHP5.2.0では問題ない。 あと、PHP5.2.6では直っているっぽい。


5.1.xでバグってたのを5.2.0で修正したのに5.2.1以降エンバグして5.2.6で再び直った っぽい。*2

*1:2009.07.11:なんか書き間違えてたっぽいので修正

*2:5.2.6でも直ってないっぽい。hisuiさんありがとうございます