2021.08.31
【PHP応用】 PDO⑤ プリペアードステートメントの実行 INSERT文
プリペアードステートメントの、INSERT文のコードの
書き方を紹介します。
処理の流れは以下の通りです。
1.prepareメソッドでsqlを作成し、
2.プレースホルダにbindValue,bindParamで変数をセット
3.executeで実行
※最後にexecuteされて初めてSQLは実行されています。それまでは実行されていないので注意。
$sql = "insert into member (id,name,number,email) values(:name, :number, :email)"; $name = "Andrew"; $number = 1; $email = null; $stmt = $dbh->prepare($sql); $stmt->bindValue(':name', $name, PDO::PARAM_STR); $stmt->bindParam(':number', $number, PDO::PARAM_INT); $pdo_type = is_null($email) ? PDO::PARAM_NULL : PDO::PARAM_STR; $stmt->bindValue(':email', $email, $pdo_type); $result = $stmt->execute();
★$resultをechoしてみましょう。成功時は値の取得結果、
失敗時はfalseが返ります。
補足:bindValue,bindParamの違い
・bindValue:
値をバインドしたら、その時点のセットした値が使われる。
第2引数は変数でも値でも可。
・bindParam:
バインドの後でセットする変数の内容が変わったら、変更後の値が使われる。
第2引数は必ず変数でなければいけない。
補足:bindValue,bindParamの第3引数の種類
第3引数は、SQLにおけるデータ型を指定しています。
PDO::PARAM_BOOL (integer) | SQLのブールデータ型を表します。 |
PDO::PARAM_NULL (integer) | SQLのNULL データ型を表します。 |
PDO::PARAM_INT (integer) | SQLのINTEGER データ型を表します。 |
PDO::PARAM_STR (integer) | SQLのCHAR, VARCHAR, または他の文字列データ型を表します。 |
実際の使用例
実際の使用例としては、
ユーザ―視点でウェブフォームを入力し、提出すると、
裏側でプリペアードステートメント(INSERT文)が実行されます。
くわしくは、次回の記事をご覧ください。