プリペアードステートメントとbindParam

プリペアードステートメントとbindParam
#04 データを挿入してみよう (2)
http://dotinstall.com/lessons/basic_php_advanced/6904
を参考に
プリペアードステートメントとbindParam
の使い方
そして
挿入されたレコードのIDの取得を学習
プリペアードステートメントの違った書き方
まず、
prepare() で
SQLを用意する
プレースホルダーには
?,?,? ではなく
:変数名,:変数名,:変数名
の方を使う
結果については、変数 $stmt に格納
ソースにすると
$stmt = $dbh->prepare(“insert into users (name,email,password) values (:name,:email,:password)”);
次に、
bindParam() を使うことで、
それぞれのプレースホルダーと変数を結びつける
bindParam(“:プレースホルダ変数”,$変数)
というように書く
今回なら
$stmt->bindParam(“:name”, $name);
$stmt->bindParam(“:email”, $email);
$stmt->bindParam(“:password”, $password);
次に、結びつけた変数に値を代入
$変数 =”代入する値”;
今回なら
$name = “n10”;
$email = “e10”;
$password = “p10″;
あとは、
execute()
を引数なしで実行すればOK
$stmt->execute();
これで、ブラウザで確認してみて
mysql -u root -p
でログインし
use blog_app;
select * from users;

代入した値が反映されていれば成功
かなり面倒な書き方だけど
データの一部だけ変更して挿入するときなどには有効な手段になる
$name=”n10″;
$email=”e10″;
$password=”p10”;
$stmt->execute();
$name = “n10x”;
$stmt->execute();
とすることで
1つ
name=n10x
で他の値は同じというものが作成される
値を変更したら
execute();
するのを忘れずに
あと、最後に insert された値のIDを知るには
lastInsertId()
を使う
これを echo で表示すればIDが表示される
これで、ページをリロードして
表示された数値と
DBで
select * from users;
で表示される id の値が同じになる
動画では44だけど
私の場合DBにそこまで書き込んでいないので
19になりました

コメントを残す

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