Heim  >  Artikel  >  Datenbank  >  Warum erhalte ich in meinem PHP-Code die Fehlermeldung „Versuch, auf den Array-Offset für einen Wert vom Typ Bool zuzugreifen“?

Warum erhalte ich in meinem PHP-Code die Fehlermeldung „Versuch, auf den Array-Offset für einen Wert vom Typ Bool zuzugreifen“?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-18 02:19:02306Durchsuche

Why Am I Getting a

Zugriff auf Array-Offset für booleschen Wert in PHP nicht möglich

Das Auftreten des Fehlers „Versuch, auf Array-Offset für Wert vom Typ Bool zuzugreifen“ in PHP bedeutet, dass der Code versucht um ein Array-Element aus einem Wert abzurufen, der kein Array ist, in diesem Fall ein boolescher Wert.

Im bereitgestellten Code fragen Sie die Datenbank nach Benutzern basierend auf ihrem Benutzernamen und ihrer E-Mail-Adresse ab. Sobald Sie ein Ergebnis erhalten, überprüfen Sie, ob der Benutzername oder die E-Mail-Adresse bereits vorhanden ist, indem Sie die Datenbankantwort mit der Eingabe aus dem Registrierungsformular vergleichen.

Der Fehler tritt jedoch auf, wenn die Datenbankabfrage keine Datensätze zurückgibt, die den Kriterien entsprechen. Dadurch wird $emailRes (und $nameRes) zu einem booleschen Wert (false) statt zu einem assoziativen Array. Folglich löst der Zugriff auf $emailRes['Email'] den Fehler aus, da Sie nicht auf einen Array-Offset für einen booleschen Wert zugreifen können.

Problem lösen

Nach Datenbankergebnissen suchen:

Die einfachste Lösung besteht darin, zunächst zu prüfen, ob die Datenbankabfrage Ergebnisse zurückgibt, bevor versucht wird, auf das Array $emailRes zuzugreifen.

$emailRes = $query->fetch(PDO::FETCH_ASSOC);
if ($emailRes) {
    // Proceed to use $emailRes
}

Geben Sie einen Standardwert an:

Wenn es Ihnen egal ist, ob die Datenbank etwas zurückgegeben hat, können Sie einen Standardwert angeben.

$emailRes = $query->fetch(PDO::FETCH_ASSOC);
$email = $emailRes['Email'] ?? ''; // Default: empty string

Alternativer Ansatz:

A Eine bessere Vorgehensweise besteht darin, die Methoden rowCount() oder fetchColumn() von PDO zu verwenden, um das Vorhandensein von Zeilen in der Datenbank zu überprüfen und so das potenzielle boolesche Ergebnis zu vermeiden.

$query = $pdo->prepare("SELECT COUNT(*) FROM Users WHERE Username = :Username");
$query->execute([':Username' => $name]);
if ($query->fetchColumn()) {
    throw new \Exception("Username is already in use!");
}

Durch Überprüfen der Zeilenanzahl, anstatt die Daten abzurufen , eliminieren Sie die Möglichkeit, ein boolesches Ergebnis zu erhalten, und stellen so sicher, dass der Fehler „Array-Offset bei boolean“ nicht auftritt.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich in meinem PHP-Code die Fehlermeldung „Versuch, auf den Array-Offset für einen Wert vom Typ Bool zuzugreifen“?. 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