Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Sparametryzowane zapytanie z kilkoma opcjonalnymi terminami wyszukiwania

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);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zainstalować i skonfigurować MySQL na Ubuntu

  2. Właściwe zarządzanie zasobami bazy danych:kursorem i połączeniem

  3. MySQL 'Order By' - poprawne sortowanie znaków alfanumerycznych

  4. Woocommerce odzwierciedla całkowitą sprzedaż detaliczną na produkt

  5. Mysql -- Ostatnie 30 dni