PHP – PDO プリペアードステートメント

基本形

  • $pdo = new PDO()PDOオブジェクトを得る
  • $stmt = $pdo->prepare()でプレースホルダー入りのSQLを準備する
  • $stmt->bindValue()$stmt->bindParam()でプレースホルダーを埋める
  • $stmt->execute()でバインドを有効化する

bindValueによる値の設定

'?'によるプレースホルダー

以下の例では、prepare()のSQL中2つの'?'がプレースホルダーになる。

bindValue()の第1引数は何番目のプレースホルダー'?'かを指定し、第2引数にそのプレースホルダーにセットする値を指定する。第3引数は省略するとPDO::PARAM_STRになる。

この結果、データベースのnum_datastr_dataにそれぞれ10, 'ABC'が追加される。

名前によるプレースホルダー

以下の例では、prepare()のSQL中':num'':str'の2つがプレースホルダーになる。

bindValue()の第1引数でそれぞれのプレースホルダーを指定し、第2引数にそのプレースホルダーにセットする値を指定する。第3引数は省略するとPDO::PARAM_STRになる。

この結果、データベースのnum_datastr_dataにそれぞれ20, 'DEF'が追加される。

bindParamによる変数の設定

bindValue()はプレースホルダーに値を設定したが、bindParam()は変数を設定する。

変数がバインドされた時点ではSQLの内容は決定されていない。変数に値をセットし、execute()を実行した段階でSQLの値が確定する。

この例では2つのプレースホルダーに変数をバインドし、その変数に値を与えてからexecute()を実行している。プレースホルダーに'?'を用いてもよい。

この結果、データベースのnum_datastr_dataにそれぞれ30, 'GHI'が追加される。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です