/ / MySQLi vorbereitete Anweisung Es ist möglich, eine Abfrage mehrmals auszuführen - php, mysqli

MySQLi vorbereitete Anweisung Es ist möglich, eine Abfrage mehrmals auszuführen - php, mysqli

Ich habe mich gefragt, ob es möglich ist, mehrere Abfragen auf diese Weise zu verwenden. wird das meine Arbeit erleichtern oder eine andere Möglichkeit, dies zu tun? bin gerade weitergegangen mysqli prepared statement also keine ahnung. Danke

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

Antworten:

0 für die Antwort № 1
$stmt = $stmt->get_result()

Gibt mysqli_result zurück und es ist keine vorbereitete Anweisung mehr. Daher können Sie nicht mehrere Abfragen ausführen.


-3 für die Antwort № 2

Sie können "Multiple Query" nicht mit Prepared verwendenAussagen. Sie können jedoch dieselbe Abfrage mit unterschiedlichen Parametersätzen ausführen - genau das, wozu vorbereitete Anweisungen dienen. Wenn Sie Ihren Code beurteilen, benötigen Sie die zweite Option (ich habe den Fragetitel korrigiert) um einen anderen Wert für die bereits gebundene Variable anzugeben.

Bitte schön:

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

oh und ja, es gab auch einen dummen Tippfehler in deinem Code, der nun behoben wurde. Sie sollten die Anweisungsvariable nicht überschreiben.