過去数日間に使用されたいくつかの質問を見てきましmysqli
たが、答えはとの違いを認識していないよう$stmt->execute()
です$db->query()
。
私が理解しているように、の結果にアクセスするための2つの異なるモデルがありますmysqli
。
column => value
これは生のSQLを使用し、SQLインジェクション攻撃を防ぐためにプログラマーが入力をエスケープする必要がありますが、プログラマーはマッピングを含む連想配列(またはプレーン配列)を取得できます。
$result_set = $db->query("SAFE SQL QUERY HERE");
while ($row = $result_set->fetch_assoc()) {
# do something with $row['fieldname'];
}
または、これを行うこともできます。これにより、パラメーターと結果を適切にバインドできますが、(AFAIK)では単純な配列結果を得ることができません。
$stmt = $db-prepare("SQL QUERY WITH ? PLACEHOLDERS");
$stmt->bind_param("s", $input_variable);
$stmt->execute();
$stmt->bind_results($output_col1, $output_col2);
while ($stmt->fetch()) {
# do something with $output_col1 and $output_col2
}
私の質問はmysqli
、最初のパターンに示されている単純な配列出力を取得する方法はありますが、2番目のパターンに従って安全にバインドされた入力パラメーターを使用する方法はありますか?
とにかくこれを行う方法が見つかりません(代わりに使用する以外PDO
に!)。