(PHP 5, PHP 7)
mysqli_stmt::store_result -- mysqli_stmt_store_result — Holt die Ergebnismenge einer vorbereiteten Anweisung (Prepared Statement)
Objektorientierter Stil
Prozeduraler Stil
Für jede Abfrage, die eine Ergebnismenge zurück gibt (SELECT, SHOW, DESCRIBE,
EXPLAIN
), muss mysqli_stmt_store_result()
aufgerufen werden, wenn die komplette Ergebnismenge im Client zwischengespeichert
werden soll. Damit liefern nachfolgende Aufrufe von mysqli_stmt_fetch()
die zwischengespeicherten Daten.
Hinweis:
Es ist unnötig, mysqli_stmt_store_result() für andere Abfragen aufzurufen. Aber in keinem Fall schadet es oder benötigt merkliche Laufzeit. Ob eine Abfrage eine Ergebnismenge zurück gibt, kann festgestellt werden, indem das Ergebnis von mysqli_stmt_result_metadata() auf
FALSE
geprüft wird.
stmt
Nur bei prozeduralem Aufruf: ein von mysqli_stmt_init() zurückgegebenes Statementobjekt.
Gibt bei Erfolg TRUE
zurück. Im Fehlerfall wird FALSE
zurückgegeben.
Beispiel #1 Objektorientierter Stil
<?php
/* Datenbankverbindung öffnen */
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* Datenbankverbindung prüfen */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
if ($stmt = $mysqli->prepare($query)) {
/* Abfrage ausführen */
$stmt->execute();
/* Ergebnis holen */
$stmt->store_result();
printf("Number of rows: %d.\n", $stmt->num_rows);
/* Ergebnis verwerfen */
$stmt->free_result();
/* Abfrage-Objekt schließen */
$stmt->close();
}
/* Verbindung schließen */
$mysqli->close();
?>
Beispiel #2 Prozeduraler Stil
<?php
/* Datenbankverbindung öffnen */
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* Datenbankverbindung prüfen */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
if ($stmt = mysqli_prepare($link, $query)) {
/* Abfrage ausführen */
mysqli_stmt_execute($stmt);
/* Ergebnis holen */
mysqli_stmt_store_result($stmt);
printf("Number of rows: %d.\n", mysqli_stmt_num_rows($stmt));
/* Ergebnis verwerfen */
mysqli_stmt_free_result($stmt);
/* Abfrage-Objekt schließen */
mysqli_stmt_close($stmt);
}
/* Verbindung schließen */
mysqli_close($link);
?>
Die obigen Bespiele erzeugen folgende Ausgabe:
Number of rows: 20.