Jesteś już chroniony przed wstrzyknięciem sql, ponieważ używasz mysqli_stmt_bind_params, które będą dla Ciebie uciekły.
Edytuj.Możesz przełączyć się na jakiś framework bazy danych, aby mieć czysty i piękny kod.
W przeciwnym razie... to taki stary styl spaghetti... ale uwielbiam to :D
Rozszerzenie kodu do pracy z nieznaną liczbą parametrów jest dość łatwe. Powinieneś po prostu zapętlić swoje parametry i jednocześnie 1. Zbuduj łańcuch zapytania z notacją znaku zapytania i dodaj swoje parametry do tablicy, którą przekażesz do maxdb_stmt_bind_param ( resource $stmt , string $types , array &$zmienna).
Wyglądałoby to tak. Zakłada, że istnieje co najmniej JEDEN parametr (ale jest to trywialne, aby tego uniknąć).
$sql = "SELECT * FROM tbl_data WHERE ";
$and = '';
$types = '';
$parameters = array();
foreach($_POST as $k => $v) {
// check that $k is on your whitelist, if not, skip to the next item
$sql .= "$and $k = ?";
$and = " AND ";
$parameters[] = $v;
$types .= 's';
}
$stmt_query = mysqli_prepare($db, $sql);
mysqli_stmt_bind_params($stmt_query, $types, $parameters);