Muszę wybrać kilka wierszy z bazy danych za pomocą operatora IN
. Chcę to zrobić za pomocą przygotowanego oświadczenia. To jest mój kod:MySQLi przygotował wyciągi z operatorem IN
<?php
$lastnames = array('braun', 'piorkowski', 'mason', 'nash');
$in_statement = '"' . implode('", "', $lastnames) . '"'; //"braun", "piorkowski", "mason", "nash"
$data_res = $_DB->prepare('SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN (?)');
$data_res->bind_param('s', $in_statement);
$data_res->execute();
$result = $data_res->get_result();
while ($data = $result->fetch_array(MYSQLI_ASSOC)) {
...
}
?>
Ale nic nie zwraca, mimo że wszystkie dane znajdują się w bazie danych.
I jeszcze jedno: jeśli przekażę $in_statement
bezpośrednio do zapytania i wykonam, dane zostaną zwrócone. Problem pojawia się przy przygotowywaniu.
Szukałem pytania w Google, ale nie było to pomyślne. Co jest nie tak z moim kodem?
Dzięki za pomoc!
Nie możesz użyć jednego parametru dla swojej klauzuli IN. Musi to być: 'GDZIE nazwisko last (?,?,?,?)' – andrewsi
OK, wielkie dzięki!) Wydaje się trochę uciążliwe. – kpotehin