Iterieren über Ergebnismengen in MySQLi
Beim Arbeiten mit Ergebnismengen in MySQLi kann es zu einem Problem kommen, bei dem nur auf den ersten Wert zugegriffen werden kann während der Iteration. Dies ist typischerweise auf die Verwendung von fetch_array() und ein falsches Verständnis seines Verhaltens zurückzuführen.
Standardverhalten von fetch_array()
Standardmäßig gibt fetch_array() ein Array mit beiden zurück indizierte und assoziative Schlüssel, bekannt als MYSQLI_BOTH. Um eine Ergebnismenge nur mit indizierten oder assoziativen Schlüsseln anzugeben, verwenden Sie MYSQLI_NUM bzw. MYSQLI_ASSOC.
Alternativen zu fetch_array()
Anstatt sich auf fetch_array() zu verlassen, Ziehen Sie effizientere und prägnantere Alternativen in Betracht:
while ($row = $output->fetch_array(MYSQLI_ASSOC)) { echo $row['uid']; }
while ($row = $output->fetch_array(MYSQLI_NUM)) { echo $row[0]; }
foreach ($output as $row) { echo $row['uid']; }
Fehlerbehebung bei der Iteration
Die Verwendung von $i zum Inkrementieren durch indizierte Schlüssel ist nicht möglich geeignet für Ergebnismengen mit assoziativen Schlüsseln. Beispielsweise kann die Ergebnismenge Werte in der folgenden Struktur haben:
[ 0 => [0 => 1, 'uid' => 1], 1 => [0 => 2, 'uid' => 2], 2 => [0 => 3, 'uid' => 3]... ]
In diesem Szenario ist $row[1] in nachfolgenden Iterationen nicht vorhanden, was zu dem Problem führt.
Das obige ist der detaillierte Inhalt vonWarum greife ich nur auf den ersten Wert in meinem MySQLi-Ergebnissatz zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!