Bei der Verwendung der MySQLI -Erweiterung für Datenbankoperationen in PHP sind MySQLI :: STMT_INIT und STORE_RESULT zwei häufig verwendete und wichtige Funktionen, die uns helfen können, SQL -Abfragen effizienter auszuführen und das Ergebnissatz zu verarbeiten. In diesem Artikel wird erläutert, wie MySQLI :: STMT_INIT verwendet wird, um Best Practices in Kombination mit Store_Result -Funktion zu implementieren, um die Leistung und Wartbarkeit des Codes zu verbessern.
MySQLI :: STMT_INIT ist eine Funktion, mit der SQL -Anweisungen initialisiert werden. Es gibt ein MySQLI_STMT -Objekt zurück, das für die nachfolgende SQL -Abfrageausführung verwendet werden kann. Durch diese Funktion können wir vor der Ausführung eine Anweisung vorbereiten und die Eingabeparameter binden. Die Verwendung von STMT_INIT ist normalerweise der erste Schritt im Datenbankabfragevorgang.
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
$stmt = $mysqli->stmt_init();
if ($stmt === false) {
die("Failed to initialize statement");
}
Im obigen Code erstellen wir zunächst ein MySQLi -Verbindungsobjekt $ MySQLI und dann ein Anweisungsobjekt $ STMT über STMT_INIT () , das für die nachfolgende SQL -Abfrageausführung verwendet wird.
Die Funktion der Funktion Store_Result besteht darin, die Abfrageergebnisse aus dem MySQL -Server in PHP zu extrahieren. Auf diese Weise können Sie bei der Bearbeitung von Abfragenergebnissen mehr durchführen. Diese Funktion wird normalerweise nach einer Auswahlabfrage verwendet, wodurch die Abfrageergebnisse lokal gespeichert werden können und dass Sie diese Ergebnisse wiederholt zugreifen können.
$stmt->store_result();
Diese Codezeile speichert die Abfrageergebnisse im Speicher und Sie können danach über die Fetch -Methode auf die Abfrageergebnisse zugreifen.
Um Abfragergebnisse effizienter zu verarbeiten, wird empfohlen, Store_Result aufzurufen, um das Ergebnis des Speichers zu speichern, nachdem die Abfrageanweisung erstellt wurde. Dies gibt mehrere Vorteile:
Leistungsverbesserung : In einigen Fällen kann die Verwendung von Store_Result mehrere Messwerte aus der Datenbank vermeiden und die Leistung verbessern.
Mehrere Zugriffsergebnisse : Store_Result speichert alle Ergebnisse im Speicher, sodass Sie diese Ergebnisse mehrmals durchqueren können, ohne jedes Mal eine Anforderung an die Datenbank zu stellen.
Fehlerbehandlung : Store_Result löst potenzielle Abfragefehler aus, um sicherzustellen, dass Sie das Problem rechtzeitig anfangen können.
Angenommen, wir müssen eine Auswahlabfrage ausführen und das Ergebnis ausgeben, und der Best -Practice -Code, der MySQLI :: STMT_INIT und STORE_RESULT kombiniert, lautet wie folgt:
// Initialisierungmysqliverbinden
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
// InitialisierungstmtObjekt
$stmt = $mysqli->stmt_init();
if ($stmt === false) {
die("Failed to initialize statement");
}
// Bereiten Sie die Anweisung für Abfragen vor
$query = "SELECT id, name, email FROM users WHERE status = ?";
// Vorverarbeitungsaussagen
$stmt->prepare($query);
// Binden Sie Parameter
$status = 'active';
$stmt->bind_param("s", $status); // "s" äußern string Parameter des Typs
// Eine Frage ausführen
$stmt->execute();
// verwendenstore_resultSpeichern Sie die Ergebnisse im Speicher
$stmt->store_result();
// Bindungsergebnisvariablen
$stmt->bind_result($id, $name, $email);
// Ausgabe von Abfragenergebnissen
while ($stmt->fetch()) {
echo "ID: $id, Name: $name, Email: $email\n";
}
// Ressourcen frei machen
$stmt->free_result();
$stmt->close();
$mysqli->close();
Initialisierungsanweisung mit STMT_INIT : Erstellen Sie ein neues SQL -Anweisungsobjekt über STMT_INIT , um sich auf die nachfolgende Vorbereitung, Bindung und Ausführung vorzubereiten.
Store_Result verbessert die Leistung : Wenn Sie mehrmals auf die Abfrageergebnisse zugreifen müssen, kann die Verwendung von Store_Result alle Daten in den Speicher laden und vermeiden Sie die Wiederverhandlung von Daten bei jedem Abfragen.
Bind -Parameter und Ergebnisse : Bind_param wird verwendet, um Abfrageparameter zu binden.
Fehlerbehandlung : In Kombination mit Store_Result können Sie Fehler im Abfrageprozess besser fangen und die Robustheit des Codes sicherstellen.