Aktueller Standort: Startseite> Neueste Artikel> So verwenden Sie MySQLI_Fetch_assoc und MySQLi_Result :: Fetch_column

So verwenden Sie MySQLI_Fetch_assoc und MySQLi_Result :: Fetch_column

gitbox 2025-05-26

Beim Betrieb von MySQL -Datenbanken in PHP bietet die MySQLI -Erweiterung eine Vielzahl von Methoden, um Abfrageergebnisse zu erhalten, von denen MySQLI_Result :: Fetch_column und MySQLI_Fetch_assoc häufig verwendet werden, um Daten zu lesen. Aber viele Entwickler fragen sich, ob diese beiden gemeinsam verwendet werden können? Können sie kombiniert werden, um eine flexiblere Rolle zu spielen? In diesem Artikel werden ihre Unterschiede und Kombinationsnutzungen im Detail mit Beispielen beschrieben.


1. Der Unterschied zwischen MySQLI_Result :: Fetch_column und MySQLi_Fetch_assoc

  • Mysqli_Result :: fetch_column
    Diese Methode wird verwendet, um einen einzelnen Wert einer angegebenen Spalte aus dem Ergebnissatz zu erhalten und eine einzelne Daten für diese Spalte zurückzugeben. Es wird normalerweise verwendet, um Speicher- und Codekomplexität zu speichern, wenn Sie nur den Wert einer bestimmten Spalte benötigen.

  • Mysqli_fetch_assoc
    Diese Funktion gibt eine Datenreihe im Ergebnissatz zurück und wird in Form eines assoziativen Arrays dargestellt. Der Schlüsselname des Arrays ist der Feldname, der für das Erhalten mehrerer Datenspalten bequem ist.

Einfach ausgedrückt, fetch_column erhält eine einzelne Datenspalte, während Fetch_assoc in der gesamten Zeile ein assoziatives Datenarray von Daten erhält.


2. Kann es in Kombination verwendet werden?

Aus technischer Sicht ist MySQLI_Result :: Fetch_Column eine Methode der MySQLi_Result- Klasse, während mySQLI_Fetch_assoc eine prozessorientierte Funktion ist und im Wesentlichen zwei verschiedenen Betriebsstilen gehören.

  • Wenn Sie einen objektorientierten Stil verwenden:
    Methoden wie $ result-> fetch_assoc () und $ result-> fetch_column () sollten einheitlich verwendet werden.

  • Wenn Sie einen prozessorientierten Stil verwenden:
    MySQLI_Fetch_assoc ($ result) sollte verwendet werden, und der prozedurale Stil hat keine entsprechende Funktion fetch_column .

Daher können sie nicht direkt auf demselben Ergebnissatz bezeichnet werden , andernfalls verursacht sie den Datencursorverwirrung.


3.. Praktische Erläuterung der Kombinationsnutzungsbeispiele

Nehmen wir an, wir befragen die Benutzer der Benutzertabelle in der Datenbank mit Fields -ID , Namen und E -Mail und demonstrieren zwei Methoden, um Daten zu erhalten.

 <?php
$mysqli = new mysqli("gitbox.net", "username", "password", "database");

// Überprüfen Sie die Verbindung
if ($mysqli->connect_error) {
    die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}

$sql = "SELECT id, name, email FROM users";
$result = $mysqli->query($sql);

if ($result) {
    // verwendenfetch_assocHolen Sie sich jede Datenreihe
    while ($row = $result->fetch_assoc()) {
        echo "ID: " . $row['id'] . ",Name: " . $row['name'] . ",Post: " . $row['email'] . "<br>";
    }
    $result->free();
}

// Führen Sie die Anfrage erneut aus
$result2 = $mysqli->query($sql);

if ($result2) {
    // verwendenfetch_columnHolen Sie sich die erste Spalte(id)
    while (($id = $result2->fetch_column(0)) !== null) {
        echo "BenutzerID: " . $id . "<br>";
    }
    $result2->free();
}

$mysqli->close();
?>

Im obigen Beispiel haben wir zwei Abfragen für Fetch_assoc bzw. Fetch_Column durchgeführt. Dies vermeidet das Problem der Verwirrung im Ergebnis des Ergebnisssatzes Cursor.


4. Empfohlene Verwendung der beiden

Wenn Sie Fetch_assoc verwenden möchten, um die vollständigen Daten zuerst zu erhalten, und dann Fetch_column verwenden, um eine Spalte zu erhalten, wird empfohlen, das Ergebnis am Array zu speichern und dann das Array zu bedienen:

 <?php
$mysqli = new mysqli("gitbox.net", "username", "password", "database");

$sql = "SELECT id, name, email FROM users";
$result = $mysqli->query($sql);

$rows = [];
if ($result) {
    while ($row = $result->fetch_assoc()) {
        $rows[] = $row;
    }
    $result->free();
}

// Holen Sie sich eine Datenspalte aus dem Cache
$userIds = array_column($rows, 'id');

foreach ($userIds as $id) {
    echo "BenutzerID: $id<br>";
}

$mysqli->close();
?>

Dies ist sowohl effizient als auch bequem und vermeiden doppelte Abfragen und Cursorprobleme.


5. Zusammenfassung

  • Mysqli_Result :: Fetch_column und MySQLi_Fetch_assoc gehören zu verschiedenen Betriebsstilen und können nicht direkt verwendet werden.

  • Wenn Sie beides verwenden möchten, wird empfohlen, die Abfrage separat auszuführen oder Fetch_assoc zu verwenden, um alles zu erhalten, und dann die integrierten PHP-integrierten Funktionen zu verwenden, um die angegebenen Spalten zu extrahieren.

  • Achten Sie bei der Verwendung in Kombination auf den Cursorstatus des Ergebnisssatzes, um Verwirrung beim Daten zu vermeiden.

Indem Sie diese beiden Methoden vernünftigerweise kombinieren, können Sie bei der Verarbeitung von Datenbankdaten flexibler und effizienter gestalten.