Heim >Backend-Entwicklung >PHP-Tutorial >„bind_result' vs. „get_result' in MySQLi: Welche vorbereitete Anweisungsmethode sollten Sie wählen?

„bind_result' vs. „get_result' in MySQLi: Welche vorbereitete Anweisungsmethode sollten Sie wählen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-04 16:30:17888Durchsuche

`bind_result` vs. `get_result` in MySQLi: Which Prepared Statement Method Should You Choose?

bind_result vs. get_result in vorbereiteten MySQL-Anweisungen

Vorbereitete Anweisungen in MySQLi bieten zwei primäre Methoden zum Abrufen von Abfrageergebnissen: bind_result und get_result. In diesem Artikel werden die Zwecke, Vorteile und Einschränkungen der einzelnen Methoden verglichen.

bind_result

Die Methode bind_result bindet Variablen explizit an die von einer Abfrage zurückgegebenen Spalten. Es erfordert, dass die Reihenfolge der Variablen genau mit der Spaltenstruktur übereinstimmt, und wird normalerweise verwendet, wenn die Abfrage eine bestimmte Teilmenge von Spalten zurückgibt.

Vorteile:

  • Kompatibel mit älteren PHP-Versionen
  • Gibt für jede einzelne Variable zurück Spalte

Nachteile:

  • Manuelle Bindung jeder Variablen
  • Erfordert zusätzlichen Code, um die Zeile als Array zurückzugeben
  • Codeaktualisierungen sind erforderlich, wenn die Tabellenstruktur Änderungen

get_result

Die get_result-Methode gibt ein Objekt zurück, das die gesamte Ergebnismenge der Abfrage enthält. Es erfordert den nativen MySQL-Treiber (mysqlnd) und bietet mehr Flexibilität.

Vorteile:

  • Gibt ein assoziatives/aufgezähltes Array oder Objekt mit Daten aus der zurückgegebenen Zeile zurück
  • Ermöglicht das gleichzeitige Abrufen aller zurückgegebenen Zeilen mit fetch_all()

Nachteile:

  • Erfordert nativen MySQL-Treiber

Beispiel: bind_result

<?php
$query1 = 'SELECT id, first_name, last_name, username FROM `table` WHERE id = ?';
$id = 5;

$stmt = $mysqli->prepare($query1);
$stmt->bind_param('i', $id);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($id, $first_name, $last_name, $username);

while ($stmt->fetch()) {
    echo 'ID: ' . $id . '<br>';
    echo 'First Name: ' . $first_name . '<br>';
    echo 'Last Name: ' . $last_name . '<br>';
    echo 'Username: ' . $username . '<br><br>';
}
?>

Beispiel: get_result

<?php
$query2 = 'SELECT * FROM `table` WHERE id = ?';
$id = 5;

$stmt = $mysqli->prepare($query2);
$stmt->bind_param('i', $id);
$stmt->execute();
$result = $stmt->get_result();

while ($row = $result->fetch_assoc()) {
    echo 'ID: ' . $row['id'] . '<br>';
    echo 'First Name: ' . $row['first_name'] . '<br>';
    echo 'Last Name: ' . $row['last_name'] . '<br>';
    echo 'Username: ' . $row['username'] . '<br><br>';
}
?>

Fazit

Die Wahl zwischen bind_result und get_result hängt von den spezifischen Anforderungen der Anwendung ab. bind_result bietet Kompatibilität mit älteren PHP-Versionen und ermöglicht eine präzise Variablenbindung, während get_result Flexibilität bietet und die Notwendigkeit einer manuellen Variablenbindung überflüssig macht. Für get_result ist jedoch ein nativer MySQL-Treiber erforderlich.

Das obige ist der detaillierte Inhalt von„bind_result' vs. „get_result' in MySQLi: Welche vorbereitete Anweisungsmethode sollten Sie wählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn