久しぶりの更新。
さぼってたわけじゃないよ!課題ばかりで新しいことが無かったから書かなかっただけだよ!
今日も課題ですが、一点引っかかったので記事に。
ORDER BY句が効かない?
formの入力値を使ってテーブルをソートする課題が出たのですが、
bindValueが効かない・・・・
まずはこんな感じで書いてみたのですけども・・・・
1 2 3 4 |
$stt = $db->prepare("SELECT * FROM mydictionary ORDER BY :field :order"); $stt->bindValue(':field', $_GET['field']); $stt->bindValue(':order', $_GET['order']); $stt->execute(); |
・・・普通にテーブル引っ張ってきちゃう・・・・ソートしやしない・・・・
で調べたら全く同じ悩みについて解決している記事を見つけました。
PDOのプリペアステートメントでORDER BY句が動作してくれない。 – PHPとかMySQLとかJSとかの備忘録的な何か
どうやらORDER BYに限ってはプレースホルダーにすることが出来ないみたいです。
変数直接突っ込むしかない模様。
どういう理屈やねん・・・・誰か知ってたら教えてもらいたいもんです。
でまあ結局こんな感じに書き換えて解決しましたとさ。
1 2 3 |
$field = e($_GET['field']); $order = e($_GET['order']); $stt = $db->prepare("SELECT * FROM mydictionary ORDER BY $field $order"); |
課題なのでふわっと突っ込んじゃってますけど、何かに使わないといけない時は、ちゃんとインジェクション対策はしませう。
コメント
No Trackbacks.