Hatena::ブログ(Diary)

揮発性のメモ このページをアンテナに追加 Twitter

2008/10/02 (木)

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さんありがとうございます

hisuihisui 2009/04/22 14:07 >PHP5.2.6では直っているっぽい。
私も今同じ現象に苦しんでるところでした!
5.2.6(win)を使ってるんですけど、やっぱり駄目なんです(涙

junQjunQ 2009/10/20 23:19 5.2.10でも直ってないかもしれません・・・。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/iww/20081002/1222935831
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 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |