# プリペアドステートメントと `PDO_MySQL`
+ **`PREPARE`** フェーズ:
  + 実行のたびに変化する値を表す名前付きプレースホルダーまたは疑問符を含む SQL ステートメントを作成します。たとえば、ここでは名前付きプレースホルダーを使用しています
    + **`$sqlStmt = "INSERT INTO pdo_t1 (c1, c2)" . " VALUES (:c1_value, :c2_value)"`**
  + `PDO` オブジェクトからプリペプリペアドステートメントオブジェクトを作成します
    + **`$stmt = $dbHandle->prepare($sqlStmt)`**
  + 次の例のように、指定されたプレースホルダーの値を含む変数をバインドします
    + **`$stmt->bindParam(':c1_value',$v1)`**
    + **`$stmt->bindParam(':c2_value',$v2)`**
+ **`EXECUTE`** フェーズ:
  + バインド変数に値を割り当てます。この例では:
    + **`$v1 = "V1"`**
    + **`$v2 = "V2"`**
  + **`$stmt->execute()`** メソッドを呼び出して実行する
-----------------------------------------------------------------------------------
`PHP/PDO` でプリペプリペアドステートメントを作成するには、実行のたびに変化する値のプレースホルダーまたは疑問符を使用して SQL を記述します。

スライドの例では、疑問符の代わりに名前付きのプレースホルダーを使用しています。コードが読みやすくなるため、この方法をお勧めします。

ステートメントを準備したら、`bindParam()` メソッドを使用して各プレースホルダーの値を設定して、実行できる状態にします。

プリペアドステートメントが行を返すクエリであるかどうかに関係なく、ステートメントオブジェクトの `execute()` メソッドを使用してプリペアドステートメントを実行します。

ステートメントを実行して戻り値を読み取った後、プレースホルダーに新しい値を割り当て、プリペアドステートメントを再度準備せずに再実行します。プリペアドステートメントを終了したら、`$stmt->closeCurosr()` で閉じます。
