/ / Przygotowane przez MySQLi oświadczenie możliwe jest wielokrotne wykonanie zapytania - php, mysqli

Przygotowane przez MySQLi oświadczenie możliwe jest wielokrotne wykonanie zapytania - php, mysqli

Zastanawiam się, czy możliwe jest użycie wielu zapytań w ten sposób? to sprawi, że moja praca będzie łatwa lub jakikolwiek inny sposób to zrobić? właśnie przeniosłem się do mysqli prepared statement więc nie mam pojęcia. dzięki Ci

$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
}

Odpowiedzi:

0 dla odpowiedzi № 1
$stmt = $stmt->get_result()

zwraca mysqli_result i nie jest już przygotowywanym stwierdzeniem, a zatem nie można wykonywać wielu zapytań.


-3 dla odpowiedzi № 2

Nie możesz użyć "wielu zapytań" z przygotowanymisprawozdania. Możesz jednak wykonać to samo zapytanie z innym zestawem parametrów - to jest dokładnie to, do czego przygotowane są instrukcje. Sądząc po kodzie, potrzebujesz drugiej opcji (więc poprawiłem tytuł pytania). podać inną wartość dla już powiązanej zmiennej.

proszę bardzo:

$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
}

no i tak, w twoim kodzie było też głupie literowanie, teraz naprawione. Nie powinieneś nadpisywać zmiennej instrukcji.