/ / MySQLi preparado declaración es posible ejecutar una consulta varias veces - php, mysqli

MySQLi preparado declaración es posible ejecutar una consulta varias veces - php, mysqli

Me preguntaba si es posible utilizar la consulta múltiple de esta manera? ¿Eso facilitará mi trabajo o cualquier otra forma de hacer esto? acaba de pasar a mysqli prepared statement así que ni idea gracias

$mysqli = new mysqli("localhost", "root", "", "demo");
$stmt = $mysqli -> prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt = $stmt->get_result();
while ($row = $stmt->fetch_assoc()) {
//do something with row
}

$stmt->bind_param("i", $id2);
$stmt->execute();
$stmt = $stmt->get_result();
while ($row = $stmt->fetch_assoc()) {
//do something with row
}

Respuestas

0 para la respuesta № 1
$stmt = $stmt->get_result()

devuelve mysqli_result y ya no está preparada la instrucción y, como tal, no puede realizar varias consultas.


-3 para la respuesta № 2

No se puede utilizar "consulta múltiple" con preparadodeclaraciones Sin embargo, puede ejecutar la misma consulta con diferentes conjuntos de parámetros, para eso son exactamente las declaraciones preparadas. A juzgar por su código, necesita la segunda opción (así que corregí el título de la pregunta). Todo lo que necesita es para suministrar otro valor para la variable ya unida.

aqui tienes:

$mysqli = new mysqli("localhost", "root", "", "demo");
$stmt = $mysqli -> prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
$res = $stmt->get_result();
while ($row = $res->fetch_assoc()) {
//do something with row
}

$id = $id2; // you need to use the same variable you bound
$stmt->execute();
$res = $stmt->get_result();
while ($row = $res->fetch_assoc()) {
//do something with row
}

ah y sí, también había un error tipográfico en tu código, ahora corregido. No deberías sobrescribir la variable de la sentencia.