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つもしくは複数の値を入れることができる。
ただし、疑問符を使った形式と名前付きパラメータを使った形式を同時に使うことはできない。

bool PDOStatement::execute ([ array $input_parameters ] )

PDOStatement::execute — プリペアドステートメントを実行する

プリペアドステートメントを実行する。
boolean型なので、実行時 true , false を返す


PDO::prepareで準備して、PDO::executeで実行する。といった流れになるっと。