Tengo que seleccionar algunas filas de la base de datos usando el operador IN
. Quiero hacerlo usando una declaración preparada. Este es mi código:Declaraciones preparadas MySQLi con el operador 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)) {
...
}
?>
Pero no devuelve nada aunque todos los datos existen en la base de datos.
Y uno más: si paso $in_statement
directamente para consultarlo y ejecutarlo, los datos serán devueltos. Entonces el problema aparece en la preparación.
Estaba buscando la pregunta en Google pero no fue exitosa. ¿Qué pasa con mi código?
¡Gracias por la ayuda!
No puede usar un solo parámetro para su cláusula IN. Tiene que ser: 'WHERE lastname IN (?,?,?,?)' – andrewsi
Bien, muchas gracias!) Parece un poco engorroso. – kpotehin