Erreur "Essayer d'accéder au décalage du tableau sur la valeur de type Bool" en PHP
L'erreur "Essayer d'accéder au décalage du tableau sur la valeur de type bool" se produit lorsque vous tentez d'accéder à un élément d'un tableau qui n'existe pas ou qui est d'un type non valide, en particulier un booléen.
Dans l'extrait de code fourni, vous exécutez des requêtes pour vérifier si un nom d'utilisateur ou un email existe déjà dans la base de données. Si la requête ne renvoie aucun résultat, elle attribue false à la variable correspondante ($emailRes ou $nameRes).
Lorsque vous essayez ensuite d'accéder au nom d'utilisateur ou à la clé Email de $nameRes ou $emailRes, vous obtenez l'erreur car ce sont tous les deux des booléens, pas des tableaux.
Solution :
1. Vérifier l'existence :
Avant d'accéder aux décalages du tableau, vérifiez si la base de données a renvoyé des résultats :
$emailRes = $query->fetch(PDO::FETCH_ASSOC); if ($emailRes) { // Proceed to use $emailRes['Email'] }
2. Attribuer une valeur par défaut :
Si vous ne vous souciez pas de savoir si la base de données a renvoyé quelque chose, vous pouvez attribuer une valeur par défaut :
$emailRes = $query->fetch(PDO::FETCH_ASSOC); $email = $emailRes['Email'] ?? ''; // Default to empty string
3. Utilisez fetchColumn() de PDO pour la vérification d'existence :
Un moyen plus efficace de vérifier l'existence dans la base de données est d'utiliser fetchColumn():
if ($query->fetchColumn()) { // Record exists } else { // Record does not exist }
4. Approche en une seule requête :
Vous pouvez également vérifier l'existence du nom d'utilisateur et de l'adresse e-mail en une seule requête :
$query = $pdo->prepare("SELECT COUNT(*) FROM Users WHERE Username =:Username OR Email =:Email"); $query->execute([':Username' => $name, ':Email' => $email]); if ($query->fetchColumn()) { // Username or email already exist } else { // Username and email are both available }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!