У меня есть веб-приложение с большим количеством данных и функцией поиска / фильтрации с несколькими полями, такими как имя, статус, дата и т. Д. Я использовал параметризованные запросы, подобные этим, для обычных (не поисковых) запросов:
$id = $_POST['itemID'];
$db = mysqli_connect($host, $username, $password, $database);
$sql_query = "SELECT * FROM tbl_data WHERE ID = ?";
$stmt_query = mysqli_prepare($db, $sql_query);
mysqli_stmt_bind_params($stmt_query, "i", $id);
mysqli_stmt_execute($stmt_query);
//and so on..
Как бы я защитил от SQL-инъекций с несколькими дополнительными параметрами? Может быть до 10 отдельных параметров, которые могут быть или не быть установлены.
Редактировать, поскольку вопрос кажется неясным :
Мой пример был с одним параметром, который не является обязательным. Я знаю, что это защищает от SQL-инъекций. Как мне сделать это с 10 параметрами, где один или несколько могут быть установлены одновременно? Например. запрос, такой как этот:
SELECT * FROM tbl_data
WHERE NAME = ?
AND STATUS = ?
AND DATE = ?
AND PARAM4 = ?
AND PARAM5 = ?
, где пользователь хочет искать только по имени и дате. Как бы я сделал привязку? Не стоит проверять каждую из 100 возможных комбинаций поисковых терминов.