Heim  >  Fragen und Antworten  >  Hauptteil

Es wird versucht, auf den Array-Offset eines Werts vom Typ Null in einem Array zuzugreifen, das aus einer MySQLi-Ergebnismenge gefüllt wird

Ich bin endlich dazu gekommen, meine PHP-Installation von 7.2 auf 7.4 zu aktualisieren (habe vor, direkt auf die aktuelle Version zu aktualisieren, mache es aber schrittweise) und beim Ausführen des vorhandenen Skripts ist eine seltsame Fehlermeldung aufgetreten:

Meldung: Versuch, auf den Array-Offset für einen Wert vom Typ Null zuzugreifen

Die angezeigte Zeile füllt einfach ein Array aus einer einfachen MySQL-Ergebnismenge.

for($i = 0; $resultArray[$i] = mysqli_fetch_row($result)[0]; $i++) ;

Das Skript läuft immer noch einwandfrei, aber ich mag keine Fehler. Ich bin verwirrt darüber, warum das schiefgeht, und habe stundenlang vergeblich gesucht. Warum tritt dieser Fehler auf? Gibt es eine Möglichkeit, denselben Vorgang fehlerfrei auszuführen?

P粉046387133P粉046387133314 Tage vor542

Antworte allen(2)Ich werde antworten

  • P粉076987386

    P粉0769873862024-01-03 16:51:35

    根据文档,一旦到达结果集末尾,mysqli_fetch_row 将返回 null

    您可以使用foreach循环。我不推荐它,但这是一个可能的解决方案。

    foreach ($result->fetch_all() as [0 => $resultArray[]]); // no body needed

    你真的不需要使用这个奇怪的装置。您可以使用 array_column() 来实现更简单的操作。

    $resultArray = array_column($result->fetch_all(), 0);

    Antwort
    0
  • P粉681400307

    P粉6814003072024-01-03 14:58:49

    mysqli_fetch_row 将在某个时刻返回 null (根据文档,当它用完要检索的行时,它总是会这样做)。但是在尝试读取其第 0 个索引之前您没有检查它,因此会出现错误。

    许多人使用这种样式检索行:

    while ($row = mysqli_fetch_row($result)) { 
      $resultArray[] = $row[0]; 
    }

    这将避免此类问题。这也是您在示例和文档中经常看到的完成方式。

    Antwort
    0
  • StornierenAntwort