Используйте директиву IN для поиска с подготовленным оператором
Моя цель - найти все элементы в таблице, которые соответствуют коллекции, хранящейся в строке:
$array=array("item1","item2","item3","item4");//This is dynamically filled, this is just an example
$in_list = "'".implode("','",$array)."'";//that's why i use implode
$stmt = $this->db->prepare('SELECT libelle,activite,adresse,tel,lat,lng FROM etablissements where type IN ('.$in_list.')');
$stmt->bind_param("s", $in_list);
$stmt->execute();
$stmt->bind_result($libelle,$activite,$adresse,$tel,$lat,$lng);
Это, кажется, не работает идеально, это всегда выдает мне следующее предупреждение:
mysqli_stmt::bind_param() [<a href='mysqli-stmt.bind-param'>mysqli-stmt.bind-param</a>]: Number of elements in type definition string doesn't match number of bind variables in <b>/homepages/25/d399726988/htdocs/
Если бы у меня был один параметр, это было бы очевидно:
$stmt = $this->db->prepare('SELECT libelle,activite,adresse,tel,lat,lng FROM etablissements where type =?');
$stmt->bind_param("s", $parameter);
Но так как мне приходится иметь дело с этим, мне стало немного сложно.