2016-09-03

名前付きと名前なしのプレースホルダを同時に使うとエラーが発生する

はじめに

PHPを使用してデータベースからデータを取りだすときの手法として、動的に任意のデータはを引き渡すことができる、プレースホルダがあります。プレースホルダには、名前つけて値を引き渡す方法と、名前を付けずに値を引き渡す方法がありますが、これらの簡単な説明と、使用するにあたって少し注意する点を書いていきます。

名前付きプレースホルダの場合

以下の例では、bindValueで名前付きプレースホルダに対して値を引き渡しており、その値がSQL文のプレースホルダ名の部分に代入されてselectが実行されます。

名前なしプレースホルダの場合

名前を付けない場合は、SQL文に記述するプレースホルダには「?」を、bindValueには数字を連番で記述します。SQL文に記述された「?」にbindValueで指定した数字の若い順から順番に値が代入されます。

両方混在する場合

では、名前ありとなしの両方を同時に使用するとどうなるかというと、以下のようなエラーが出力されます。

これはエラー文の通りで、プレースホルダの指定方法が混在していると起こるようで、名前なしか名前付きどちらかに統一して指定しないと動いてくれないようです。

さいごに

紹介した例ではbindValueに固定値を指定していますが、$_POST['']などでポスト情報を指定して動的な値を入力するのが本来の使用方法だと思うので、ご留意ください。

プレースホルダで名前付きと名前なしの両方を同時に指定するという事もまずないと思いますが、一度書いたプログラムをコピーして持ってきて、書き換え忘れててエラーが出た、なんて事があったので、ここにメモしておきます。

コメント
1wfrysescwt
Zrlna9 <a href="http://scpgcccgxskb.com/">scpgcccgxskb</a>, [url=http://njsxnoicvxsh.com/]njsxnoicvxsh[/url], [link=http://pjtrqchliiet.com/]pjtrqchliiet[/link], http://uqigkujhokzk.com/


コメントする(※は必須項目です)













画像認証