# プリペアドステートメントと `mysqli`
+ **`mysqli_stmt`**クラスはプリペアドステートメントを表する
+ 準備フェーズ:
  + 実行のたびに変化する値を表す疑問符の付いた `SQL` ステートメントを作成します。次に例を示します
    + **`$sqlStmt = "INSERT INTO pdo_t1 (c1, c2)" . " VALUES (?, ?)"`**
  + **`mysql_stmt`** クラスのインスタンスであるプリペプリペアドステートメントオブジェクトを作成します
    + **`$stmt = $mysqli->prepare($sqlStmt)`**
  + 疑問符の値を含むバインド変数。この例では、どちらの変数も文字列型 **`"s"`** です
    + **`$stmt->bind_param("ss", $v1, $v2)`**
+ 実行フェーズ:
  + バインド変数に値を割り当てます。この例では:
    + **`$v1 = "V1"`**
    + **`$v2 = "V2"`**
  + **`$stmt->execute()`** メソッドを呼び出して実行する
-----------------------------------------------------------------------------------
`mysqli` でプリペプリペアドステートメントを作成するには、実行のたびに変化する値のプレースホルダーを使用して SQL を記述します。

スライドの例では、名前付きのプレースホルダーの代わりに疑問符を使用してこれを行っています。

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

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

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