[PHP][PDO]prepareでのバインド方法整理
データをstmtに渡す部分をちょくちょく待ちがえて混乱するのでメモ
参考:http://php.net/manual/ja/pdostatement.execute.php
[メモ]
大きく、①連想配列の要素名で紐付けるか、②bindValue,bindParamで明示的に紐付けするか、の2通りがある。
で、①の場合はexecute時に配列を渡す。②の場合はexecute時の引数は不要。というところがこんがらがっていた。
①連想配列の要素名で自動で紐付ける場合-execute時にデータを渡す
これを一番良く使いたいのだけど忘れてしまう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/* SQLを用意 */ $sql = "INSERT INTO TABLE (id,name) VALUES (:id, :name)"; /* prepare */ $stmt = $db->prepare($sql); //$dbにコネクションがあるとして /*プレースホルダ(:id, :name)に指定した値と同じ要素名を持つ連想配列を作成する。*/ $data = array( ':id' = '100', ':name' = 'samplename', ); /* sql実行 */ $res =$stmt->execute($data); //★ここで配列を渡す |
②bindParam,bindValueを利用する場合->prepare後にbindを実行してexecuteする。
bindValue(プレースホルダーに値を紐付ける)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/* SQL の用意*/ $sql = "INSERT INTO TABLE (id,name) VALUES (:id, :name)"; /* prepareの実行*/ $stmt = $this->db->prepare($sql); $id = '100'; $name = 'sample_name'; /* bindの実行*/ $stmt->bindValue(':id', $id); //プレースホルダと変数の紐付け 変数OK $stmt->bindValue(':name', 'sample_name'); //値直接OK /* sql実行*/ $stmt->execute(); //bind済みなので引数無し |
bindParam(プレースホルダーに変数を紐付ける)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/* SQL の用意*/ $sql = "INSERT INTO TABLE (id,name) VALUES (:id, :name)"; /* prepareの実行*/ $stmt = $this->db->prepare($sql); $id = '100'; $name = 'sample_name'; /* bindの実行*/ $stmt->bindParam(':id', $id); //プレースホルダと変数の紐付け $stmt->bindParam(':name', $name); $id = '200'; // 後から紐づいた変数の値を変更すると、その値が有効になる。 /* sql実行*/ $stmt->execute(); //bind済みなので引数無し |
関連記事
-
-
【MySQL】query_logを取得した場合の速度影響
あくまでWEB画面表示について。 環境は下記。 Linux CentOs7.1 …
-
-
アンケートOSS lime surveyを軽く使ってみてのメモ
varsion 1.92 良い所 作成できるアンケートは多岐にわたり、細かい設定 …
-
-
【メモ】simple_html_parserの使い方リンク
[インストール~DOMオブジェクトの取得] http://so-zou.jp/w …
-
-
[php]メモ_開始月と終了月を指定して、その間の各月、開始日・終了日を得る
メモ 関数 [crayon-62bacc922bbc5276188 …
-
-
MongoDBとPHP_リンクと個人的ポイントまとめ
=============================== リンク集 === …