SQLインジェクションから保護するためにステートメントを使用しています...私の質問は、複数のクエリをループするときに何を繰り返す必要があるかということです。
2番目のクエリを見ると、prepareステートメントをforeachループに含める必要があるかどうかわかりません。
このサマリーコードに何か問題がありますか?
データベース接続を開く
// connect to database
$conn = connect('r');
最初のクエリを起動する
$sql = "SELECT ... FROM ... WHERE xxx = ?";
$stmt = $conn->stmt_init();
$stmt->prepare($sql);
$stmt->bind_param('i', $albumid);
$stmt->bind_result(..., ...);
$stmt->execute();
$stmt->store_result();
$num_rows = $stmt->num_rows;
if ($num_rows > 0) {
loop results...
}
$stmt->free_result();
繰り返しのある2番目のクエリ:
$sql = "SELECT ... FROM ... WHERE xxx = ?";
$stmt = $conn->stmt_init();
$stmt->prepare($sql); ///??????? inside or outside foreach loop ?????
foreach (... as $key => ...) {
$stmt->bind_param('i', $key);
$stmt->bind_result(...);
$stmt->execute();
$stmt->store_result();
$num_rows = $stmt->num_rows;
if ($num_rows > 0) {
loop results...
}
$stmt->free_result();
}
データベースを閉じる
// close database
$conn->close();