Devo selezionare alcune righe dal database utilizzando l'operatore IN
. Voglio farlo usando una dichiarazione preparata. Questo è il mio codice:Istruzioni preparate da MySQLi con l'operatore 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)) {
...
}
?>
Ma non restituisce nulla sebbene tutti i dati siano presenti nel database.
E ancora: se passo $in_statement
direttamente per interrogarlo ed eseguirlo, i dati verranno restituiti. Quindi il problema appare nella preparazione.
Stavo cercando la domanda in Google, ma non è stato un successo. Cosa c'è che non va nel mio codice?
Grazie per l'aiuto!
Non è possibile utilizzare un singolo parametro per la clausola IN. Deve essere: 'WHERE lastname IN (?,?,?,?)' – andrewsi
Ok, grazie mille!) Sembra un po 'ingombrante. – kpotehin