PHP入門(応用編)その3
#3 データを挿入してみよう(1)
データベースのデータを扱う場合、エスケープ処理が必要となる。
そこで使うのがプリペアドステートメントと呼ばれるもの。
記述される形は二通り。
疑問符を使ったプレースホルダ
$stmt = $dbh->prepare("insert into db (name, email, password) values (?,?,?)"); $stmt->execute(array('n', 'e', 'p'));
名前付きパラメータ
$stmt = $dbh->prepare("insert into db (name, email, password) values (:name,:email,:password)"); $stmt->execute(array(':name'=>'n2', ':email'=>'e2', ':password'=>'p2'));
名前付きパラメータの方は連想配列のような形かな?
- プリペアドステートメントを使うと値のエスケープ処理をしてくれる
- エクセキュートには配列を使う。
- プレースホルダとは値を置く位置
そもそもプリペアドステートメント、エクセキュートとはなんぞや。
PDO::prepare ( string $statement [, array $driver_options = array() ] )
- PDO::prepare — 文を実行する準備を行い、文オブジェクトを返す
- PDO::executeを使う準備をする。
文の中に1つもしくは複数の値を入れることができる。
ただし、疑問符を使った形式と名前付きパラメータを使った形式を同時に使うことはできない。 - プリペアドステートメントを実行する。
boolean型なので、実行時 true , false を返す
bool PDOStatement::execute ([ array $input_parameters ] )
PDOStatement::execute — プリペアドステートメントを実行する
PDO::prepareで準備して、PDO::executeで実行する。といった流れになるっと。