テーブルの特定の行を削除できる関数を作成しようとしています。この関数をいくつかの異なるテーブルに使用したいので、関数を呼び出すときに、関数のパラメーターの1つをテーブル名にします。これが私がやろうとしていることの例です:
function delete($conn, $table, $id) {
$stmt = $conn->prepare("DELETE FROM ".$table." WHERE id = :id");
$stmt->bindParam(":id", $id, PDO::PARAM_INT);
$stmt->execute();
if ($stmt->rowCount() > 0) {
return true;
} else {
return false;
}
}
私が抱えている問題の1つは、$ table変数がSQLクエリに直接入るため、データベースがSQLインジェクションのリスクにさらされないということです。
他の質問の1つから学んだように、:tableを配置してbindParam関数に追加することはできないため、この関数を安全にする方法がわかりません。何か案は??