Maison > base de données > tutoriel mysql > Pourquoi ma requête de correspondance de lignes de base de données PDO renvoie-t-elle zéro même lorsque des correspondances existent ?

Pourquoi ma requête de correspondance de lignes de base de données PDO renvoie-t-elle zéro même lorsque des correspondances existent ?

Patricia Arquette
Libérer: 2024-12-18 17:20:12
original
214 Les gens l'ont consulté

Why Does My PDO Database Row Matching Query Return Zero Even When Matches Exist?

Correspondance des lignes dans la base de données avec PDO : problèmes de dépannage

Lorsque vous essayez de vérifier les lignes en double dans une base de données à l'aide de PDO, vous pouvez rencontrer des scénarios où les résultats diffèrent de vos attentes. Voici les problèmes potentiels et les solutions à prendre en compte :

Problèmes causés par des erreurs SQL

Confirmez que votre requête s'exécute sans erreur. PDO peut renvoyer « 0 » comme nombre de résultats même s'il n'y a aucune correspondance, indiquant un problème de requête.

Problèmes causés par la condition

Vérifiez les conditions de votre requête pour exclusivité. Des conditions telles que « WHERE col=1 AND col=2 » renverront toujours « 0 ». Simplifiez les conditions pour isoler le problème.

Problèmes causés par les données

  • Assurez-vous que les variables impliquées dans la requête existent et contiennent des valeurs.
  • Vérifiez les caractères non imprimables ou convertis dans les données d'entrée. Encodez ces caractères à l'aide de rawurlencode() pour les rendre visibles.

Conseils de débogage

  • Activez le rapport d'erreurs complet pour PDO et PHP.
  • Examinez les données de la base de données et les valeurs d'entrée pour détecter les différences. Utilisez urlencode() pour révéler les caractères non imprimables.
  • Assurez-vous que vous êtes connecté à la bonne base de données.
  • Vérifiez le jeu de caractères et les configurations d'encodage pour la base de données et PHP.

Exemple de problème et de résolution

Votre requête inclut une chaîne avec des entités HTML, telles que comme "SELECT count(*) FROM inbox WHERE ... AND from_email = "abc Offers <[email protected]>"". Lorsqu'elle est exécutée dans phpMyAdmin, cette requête fonctionne, mais renvoie « 0 » via PDO. Les entités HTML ("<" et ">" converties en entités) provoquent l'incompatibilité. La modification de la requête pour supprimer ces entités résout le problème :

$sql = 'SELECT count(*) FROM inbox WHERE uid = ? AND from_email = "abc Offers [email&#160;protected]"';
$result = $link->prepare($sql); 
$result->execute([$email_number,$email_f]); 
$number_of_rows = $result->fetchColumn();
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