sql >> Database >  >> RDS >> Mysql

Hoe een parameter in een voorbereide mysqli-query in PHP te negeren?

U kunt een lijst met criteria samenstellen en de bindwaarden en -typen aan een lijst toevoegen. Hier is een snelle mock-up die gebruikmaakt van twee van de velden waarnaar u verwijst...

$data = [];
$params = "";
$where = [];
if ( !empty($name)) {
    $data[] = $name;
    $params.="s";
    $where[] = "name like ?";
}
if ( !empty($size)) {
    $data[] = $size;
    $params.="i";
    $where[] = "size < ?";
}
$sql = "SELECT * FROM items";
if ( count($where) > 0 ){
    $sql .= " where ". implode ( " and ", $where);
}
$query = $database->prepare($sql);
$query->bind_param($params, ...$data);
$query->execute();

Merk op dat de bind_param() gebruikt de ... zodat u een array kunt doorgeven in plaats van de afzonderlijke velden.




  1. SQL NIET IN werkt niet

  2. Hoe COMPRESS() werkt in MariaDB

  3. Alleen-lezen- en lees-schrijftransacties splitsen met JPA en Hibernate

  4. ID-veld invoegen gegenereerd door trigger, maar niet doorgegeven