Mysql
 sql >> Base de données >  >> RDS >> Mysql

Problème avec les lignes correspondantes dans la base de données à l'aide de PDO

Problèmes causés par les données

Il y a très probablement des caractères convertis ou non imprimables dans les données d'entrée (ou la base de données). Par exemple, il peut y avoir un caractère de saut de ligne ou un symbole codé de manière particulière, ou certains caractères tels que < et > convertis en entités HTML. Par conséquent, la requête contient <[email protected]> ne correspondra jamais à un texte &lt;[email protected]&gt; .

Le problème est que ce n'est qu'une supposition, et personne ne peut vous dire quel est le problème réel, car c'est votre base de données, votre saisir des données et seulement vous peut trouver le problème.

J'ai écrit un article qui explique comment déboguer vos problèmes PDO .

Pour déboguer un problème particulier, vous avez besoin

  • assurez-vous que le rapport d'erreur complet est activé pour PDO et PHP. Cela aide vraiment, vous montrant les erreurs typographiques occasionnelles, les fautes d'orthographe et autres
  • examiner à la fois les données de la base de données et les entrées pour trouver la différence. bin2hex() la fonction aiderait, révélant tous les caractères non imprimables et convertis, à la fois dans la base de données et dans l'entrée.

Problèmes causés par les identifiants de connexion

Un autre problème fréquent est lorsque vous avez plusieurs bases de données et que vous vous connectez à la mauvaise qui ne contient pas les données demandées. Ce problème est similaire à celui-ci , suivez donc simplement la même routine, en ne vérifiant pas la liste des tables mais les lignes de données.

Une remarque non pertinente mais importante

En passant, mais néanmoins très important :votre relevé préparé est un code culte du cargo qui ne protège rien . Voici comment cela doit être :

$sql = 'SELECT count(*) FROM inbox WHERE uid = ? AND from_email = ?'; 
$result = $link->prepare($sql); 
$result->execute([$email_number,$email_f]); 
$number_of_rows = $result->fetchColumn();