ウェブサイトのデータベースアクセスのセキュリティを向上させたいと考えており、一般的なコンセンサスは準備済みのステートメントを使用するようです。私はどのように動作するのか考えていますが、私は彼らの使い方を一般化したいので、私が提供する必要があるのはクエリ、パラメータタイプ、値だけです。しかし、私はこれに関して特に優れたリソースは見つけられていません。その結果、私はこれにどのようにアプローチすべきかについて一種の迷いがあります。複数の値を使用したプリペアドステートメント
基本的には、私が欲しいのは以下の通りです。
$query = "SELECT * FROM Table WHERE Column1 = ? AND Column2 = ?";
$array[0] = "string";
$array[1] = 5;
$parameters = "si";
$dbHandler = new mysqli("server", "user", "password", "database");
$stmt = $dbHandler->prepare($query);
$stmt->bind_param($parameters, $array);
$stmt->execute();
//Process results
私はこれが適切な手順ではないことを認識していますが、それが問題です。この仕事をするために私は何ができますか?その考え方は、$array
内の変数の数が変わる可能性があり、パラメータリストも変わる可能性があります。
あなたが達成しようとしていることは私には分かりません。あなたが提供したいのは、「クエリ、パラメータの型、値」だけです。つまり、準備された文がどこでもすべてのケースで既に動作しています。 – VoteyDisciple
アレイの部分は私が知らないものです。プリペアドステートメントの標準的な使い方は 'bind_param(" sss "、$ s1、$ s2、$ s3);'のような値をリストすることですが、3つの文字列変数の代わりに配列を使いたいと思います。 – user3521737
申し訳ありませんが、私はmysqliでこれをやっていることを忘れていました。私はPDOだと思っていました。 (ちょうど切り替えるだけで構文が重要な場合は、ここで実行可能なオプションが「PDOを使用する」かもしれません。) – VoteyDisciple