■プレースホルダとは
SQLインジェクション(DBに対して第三者が不必要なSQLを実行する事)等から守る方法
開発者の想定しない命令テーブルのデータ消去等を悪意のある第三者にさせないために使う。
万が一不正な値が入力されても第三者にSQL文の命令はできなくなる。
▼SQL文の中にPHPの変数を直接書いてはダメ!!!
SQLインジェクションが容易に行えるようになってしまう!!
//■ダメな例
$sql = "SELECT * FROM user WHERE name= '$name'";
■プレースホルダを使用する。
①変動箇所を:で指定。文字列カラムでもシングルクオテーションは不要。
プレースホルダの名前はカラム名と同じにしておくと分かりやすい。
$sql = "SELECT * FROM user WHERE name= :name";
②プレースホルダに実際の値をバインドする。
実際にプレースホルダを使えるようにここで指定してる。
$sql = "SELECT * FROM user WHERE name= :name";
//bindValue('プレースホルダ名',バインドするデータ,データの型);
bindValue(':name', $name, PDO::PARAM_STR);
文字型:PARAM_STR
数値型: PARAM_INT
ラージオブジェクト(画像データなど) PARAM_LOB
NULL PARAM_NULL