基本形
$pdo = new PDO()でPDOオブジェクトを得る$stmt = $pdo->prepare()でプレースホルダー入りのSQLを準備する$stmt->bindValue()や$stmt->bindParam()でプレースホルダーを埋める$stmt->execute()でバインドを有効化する
bindValueによる値の設定
'?'によるプレースホルダー
以下の例では、prepare()のSQL中2つの'?'がプレースホルダーになる。
|
1 2 3 4 5 6 7 8 |
$pdo = new PDO($dsn, $user, $pass, $option); $stmt = $pdo->prepare('INSERT INTO test_table (num_data, str_data) VALUES (?, ?)'); $stmt->bindValue(1, 10, PDO::PARAM_INT); $stmt->bindValue(2, 'ABC', PDO::PARAM_STR); $stmt->execute(); $pdo = null; |
bindValue()の第1引数は何番目のプレースホルダー'?'かを指定し、第2引数にそのプレースホルダーにセットする値を指定する。第3引数は省略するとPDO::PARAM_STRになる。
この結果、データベースのnum_dataとstr_dataにそれぞれ10, 'ABC'が追加される。
名前によるプレースホルダー
以下の例では、prepare()のSQL中':num'と':str'の2つがプレースホルダーになる。
|
1 2 3 4 5 6 7 8 |
$pdo = new PDO($dsn, $user, $pass, $option); $stmt = $pdo->prepare('INSERT INTO test_table (num_data, str_data) VALUES (:num, :str)'); $stmt->bindValue(':num', 20, PDO::PARAM_INT); $stmt->bindValue(':str', 'DEF', PDO::PARAM_STR); $stmt->execute(); $pdo = null; |
bindValue()の第1引数でそれぞれのプレースホルダーを指定し、第2引数にそのプレースホルダーにセットする値を指定する。第3引数は省略するとPDO::PARAM_STRになる。
この結果、データベースのnum_dataとstr_dataにそれぞれ20, 'DEF'が追加される。
bindParamによる変数の設定
bindValue()はプレースホルダーに値を設定したが、bindParam()は変数を設定する。
変数がバインドされた時点ではSQLの内容は決定されていない。変数に値をセットし、execute()を実行した段階でSQLの値が確定する。
|
1 2 3 4 5 6 7 8 9 10 11 |
$pdo = new PDO($dsn, $user, $pass, $option); $stmt = $pdo->prepare('INSERT INTO test_table (num_data, str_data) VALUES (:num, :str)'); $stmt->bindParam(':num', $num, PDO::PARAM_INT); $stmt->bindParam(':str', $str, PDO::PARAM_STR); $num = 30; $str = 'GHI'; $stmt->execute(); $pdo = null; |
この例では2つのプレースホルダーに変数をバインドし、その変数に値を与えてからexecute()を実行している。プレースホルダーに'?'を用いてもよい。
この結果、データベースのnum_dataとstr_dataにそれぞれ30, 'GHI'が追加される。