- 2008-12-23 (火) 1:06
- Web開発をやってみる
手違いによりブログデータを削除してしまったため、キャッシュから拾える範囲で再エントリー。そのためパーマネントリンクが違うと思います。また、投稿日も再エントリーした日付になっています。
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フォローエントリー]
- Newer: FirebirdをPHPから扱うためにやったこと その1
- Older: VirtulHostの設定
Comments:0
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 とりあえず自分でやってみよう!