Home > Web開発をやってみる > PDOでLIMIT句のプリペアードステートメントに関する不具合?

PDOでLIMIT句のプリペアードステートメントに関する不具合?

手違いによりブログデータを削除してしまったため、キャッシュから拾える範囲で再エントリー。そのためパーマネントリンクが違うと思います。また、投稿日も再エントリーした日付になっています。

PHP5からの実装された(?)データベース接続のコンポーネントである、PDOで、LIMIT句のプリペアードステートメントに関するおかしな現象を見つけた。

不具合なのかサーバーの環境なのか、自分のスキル不足(←この可能性大)なのかわからいが、その例を覚書。

自分のXREA+Plusでの環境
・PHP5.2.5
・MySQL5.1.22
上で、

$rs = $myDB->prepare(’SELECT * FROM tableA WHERE id = ? group by id order by id LIMIT ? ,10′);
$rs->execute(array($_GET['id'],$page));

というPDOを使った処理を行おうとしたが、どうもLIMIT句の部分がうまくいかない。
limit句の?を直接数字にしてみると動作しているので、プリペアードステートメントに関する不具合?かとも思った。

ググってみると
http://kandk.cafe.coocan.jp/blog/jeans/index.php?itemid=617

似たような人がいたので、やはりそうなのかと。

とりあえず、

$rs = $myDB->prepare(
‘SELECT * FROM tableA WHERE id = ? group by id order by id LIMIT ‘.$page.’ ,10′
);
$rs->execute(array($_GET['id']));

こんな感じで、LIMIT句のところだけはプリペアードステートメントを止める形で実装したら動作した。

ちなみに、ローカルの環境では、この問題は起こってない。
どういうバージョンで起きるのだろうなぁ。

[2009.1.21フォローエントリー]

追記:PDOでLIMIT句のプリペアードステートメントに関する不具合?

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://blog.jplace.biz/archives/21/trackback
Listed below are links to weblogs that reference
PDOでLIMIT句のプリペアードステートメントに関する不具合? from とりあえず自分でやってみよう!

Home > Web開発をやってみる > PDOでLIMIT句のプリペアードステートメントに関する不具合?

Search
Feeds
Meta

Return to page top