FC2ブログ

プリペアードステートメントと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になりました
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

コメント

非公開コメント

最新記事
検索フォーム
GREEハコニワ攻略サイト
リンク
カテゴリ
月別アーカイブ
フリーエリア
最新記事
FXプライムレート
最新コメント
最新トラックバック