Aktueller Standort: Startseite> Neueste Artikel> Fetch_assoc () gibt die NULL -Analyse zurück

Fetch_assoc () gibt die NULL -Analyse zurück

M66 2025-05-28

Bei Verwendung von MySQLI -Erweiterung, um eine Verbindung zur Datenbank in PHP herzustellen, wird die Methode fetch_assoc () des Objekts mySQLi_Result verwendet, um die nächste Zeile von Datensätzen aus dem Abfrageergebnissatz zu erhalten. Diese Methode gibt ein assoziatives Array zurück, das den Spaltennamen als Schlüsselname und die entsprechenden Daten als Wert enthält. Wenn keine Datensätze mehr zurückgegeben werden müssen, gibt Fetch_assoc () NULL zurück. Viele Entwickler werden jedoch während der Verwendung auf ein Problem stoßen: Auch wenn die Abfrage keine Fehler zu haben scheint, gibt Fetch_assoc () immer noch Null zurück. In diesem Artikel werden die Ursachen dieses Problems untersucht und Lösungen bereitgestellt.

1. Problemanalyse

Wenn fetch_assoc () mit mySQLI_Result aufgerufen wird, um NULL zurückzugeben, gibt es mehrere mögliche Gründe:

1.1. Die Abfrage hat keine Ergebnisse

Der häufigste Fall ist, dass die ausgeführte Abfrage keine Daten zurückgibt. Wenn Sie beispielsweise eine ausgewählte Abfrage ausführen, aber in der Datenbank keine Aufzeichnung vorhanden ist, die die Kriterien erfüllt, gibt Fetch_assoc () NULL zurück. Dies ist kein Fehler, sondern ein normales Verhalten, das darauf hinweist, dass keine Daten mehr zurückgegeben werden müssen.

 $query = "SELECT * FROM users WHERE id = 10";  // Annahmen id = 10 Existiert nicht
$result = $mysqli->query($query);

$row = $result->fetch_assoc();
if ($row === null) {
    echo "Kein Aufzeichnung gefunden!";
}

1.2. In der Anweisung der Abfrage gibt es einen Fehler

Wenn in der SQL Query -Anweisung selbst ein Fehler vorliegt, wird MySQLi_query () falsch zurückgegeben, und MySQLi_Result wird nicht erstellt. Wenn Sie nicht prüfen, ob das Abfrageergebnis erfolgreich ausgeführt wird, können Sie fälschlicherweise glauben, dass die Abfrageausführung erfolgreich ist, aber tatsächlich gibt es kein gültiges Ergebnis zurück.

 $query = "SELEC * FROM users WHERE id = 10";  // SQL Syntaxfehler
$result = $mysqli->query($query);

if ($result === false) {
    echo "Abfrage fehlgeschlagen: " . $mysqli->error;
}

1.3. Alle Ergebnisse wurden extrahiert

Wenn Fetch_assoc () aufgerufen wird, werden die Daten nach anschließenden Aufrufen von Fetch_assoc () NULL zurückgegeben, was bedeutet, dass die Abfrage keine weiteren Daten zurückgibt.

 $query = "SELECT * FROM users";
$result = $mysqli->query($query);

while ($row = $result->fetch_assoc()) {
    echo $row['name'] . "<br>";
}

// Hier wieder angerufen fetch_assoc() Wird zurückkehren null
$row = $result->fetch_assoc();
if ($row === null) {
    echo "Keine Daten mehr!";
}

1.4. Andere Fehler traten während der Datenbankverbindung oder -frage auf

Wenn während der Abfrage ein Datenbankverbindungsfehler oder ein anderes Problem auftritt, kann das Objekt mySQLI_Result die Daten möglicherweise nicht korrekt zurückgeben. Zu diesem Zeitpunkt können Sie das Problem debuggen und beheben, indem Sie die Fehlermeldung von MySQLI überprüfen.

 $mysqli = new mysqli('localhost', 'root', 'password', 'database');
if ($mysqli->connect_error) {
    die('Verbindung ist fehlgeschlagen: ' . $mysqli->connect_error);
}

$query = "SELECT * FROM users";
$result = $mysqli->query($query);

if ($result === false) {
    echo "Abfrage fehlgeschlagen: " . $mysqli->error;
}

2. Lösung

2.1. Überprüfen Sie die Abfrageergebnisse

Stellen Sie zunächst sicher, dass die ausgeführte Abfrage gültige Ergebnisse zurückgibt. Sie können unnötige Fehler vermeiden, indem Sie überprüfen, ob die Abfrage erfolgreich ist:

 $query = "SELECT * FROM users WHERE id = 10";
$result = $mysqli->query($query);

if ($result === false) {
    echo "Abfrage fehlgeschlagen: " . $mysqli->error;
} else {
    $row = $result->fetch_assoc();
    if ($row) {
        echo "Finden Sie die Aufzeichnung: " . $row['name'];
    } else {
        echo "Kein Aufzeichnung gefunden!";
    }
}

2.2. Überprüfen Sie die Richtigkeit von SQL -Anweisungen

Stellen Sie sicher, dass die SQL -Anweisung frei von Fehlern ist. Detaillierte Fehlerinformationen können mithilfe der Funktionen von MySQLI_Error () oder MySQLi_errno () erhalten werden.

 $query = "SELECT * FROM users WHERE id = 10";
$result = $mysqli->query($query);

if ($result === false) {
    echo "Abfrage fehlgeschlagen: " . $mysqli->error;
}

2.3. Stellen Sie sicher, dass die Verbindung normal ist

Bestätigen Sie, dass es kein Problem mit der Datenbankverbindung gibt. Verbindungsfehler sind häufig eine der häufigsten Ursachen für das Versagen von Abfragen.

 $mysqli = new mysqli('localhost', 'root', 'password', 'database');
if ($mysqli->connect_error) {
    die('Verbindung ist fehlgeschlagen: ' . $mysqli->connect_error);
}

2.4. Debuggen

Während des Debugging -Prozesses können Sie Funktionen wie var_dump () oder print_r () verwenden, um den Inhalt des Ergebnisssatzes auszugeben, um die zurückgegebenen Ergebnisse zu überprüfen.

 $query = "SELECT * FROM users";
$result = $mysqli->query($query);

var_dump($result);  // Überprüfen Sie das Abfrageergebnisobjekt

3. Zusammenfassung

Die Fetch_assoc () -Methode von MySQLI_Result gibt NULL nicht unbedingt falsch zurück. Es ist ein normaler Zustand im Abfrageergebnissatz, was darauf hinweist, dass keine Daten für die Extraktion mehr verfügbar sind. Dieses Verhalten kann vermieden werden, indem sorgfältig prüft, ob die Abfrage Ergebnisse zurückgibt, ob die SQL korrekt ausgeführt wird und ob die Datenbankverbindung normal ist. Ich hoffe, dass die Analyse und die Lösungen in diesem Artikel Ihnen helfen können, dieses Problem besser zu verstehen und zu lösen.