Maison > base de données > tutoriel mysql > Pourquoi est-ce que j'obtiens une erreur « Essayer d'accéder au décalage du tableau sur la valeur de type Bool » en PHP ?

Pourquoi est-ce que j'obtiens une erreur « Essayer d'accéder au décalage du tableau sur la valeur de type Bool » en PHP ?

Barbara Streisand
Libérer: 2024-11-18 04:17:03
original
375 Les gens l'ont consulté

Why Am I Getting a

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']
}
Copier après la connexion

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
Copier après la connexion

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
}
Copier après la connexion

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
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal