プリペアドステートメントの使用とSQLインジェクションへの影響に気付く前に、このコードを作成しました。これで、プリペアドステートメントを使用して配列をフェッチするのがいかに面倒かについても認識しています。したがって、このコードは、ユーザーが送信した情報を使用して行をフェッチしないため、安全に使用できるかどうか疑問に思いました。
これは、セッションIDを使用してdbテーブルの行を識別することであり、セッションはlogin_check関数などによって保証されます。
$username = $_SESSION['username'];
$select = mysqli_query($link, " SELECT product_id, product_title, product_value
FROM product
WHERE user_id='$username'");
while ($row = mysqli_fetch_assoc($select))
{
$product[] = array(
'product_id' => $row['product_id'],
'product_title' => $row['product_title'],
'product_value' => $row['product_value']);
}
準備されたステートメントを知るまでは順調に進んでいたので、この問題に関するいくつかの情報をいただければ幸いです。
編集
だから、私はちょっと別の方向に行き、このクエリのために配列部分を完全にスキップしました。代わりに、私は準備されたステートメントを使用して、次のようなことをしました。
$select_stmt = $db->prepare("SELECT etc...)
$select_stmt->bind_param("CODE")
$select_stmt->execute();
等々..
しかし、問題は、私のbind_resultが14個の変数でかなり大きくなった(?)ということです。おそらくこれはばかげた質問ですが、単一の配列を使用する従来の方法と比較して、私のサイトの速度が低下しますか(14が「大きい」と見なされる場合)?これは一般的なクエリであり、多くのユーザーが同時に頻繁に使用することを願っています。プリペアドステートメントは私にとって新しいものです。
助けてくれたsofarに感謝します。