J'aurais besoin de quelques explications sur la fonction SELECT en PHP/SQL.
Sur ma base de données PHPmyadmin, si je tape:
SELECT * FROM `database_cas` WHERE cas='7601-90-3'
Ma base de données me retrouve directement la ligne concernée, tout va bien. Par contre, si je passe par le code PHP suivant:
$bdd = new mysqli('localhost','root','','db_general');
/*------------------------------------recherche dans le tableau---------------------------*/
$reponse = $bdd->query("SELECT * FROM database_cas WHERE cas='7601-90-3'");
//Initialiser un tableau
$data = array();
//Récupérer les lignes dans un tableau associatif
while ( $ligne = $reponse->fetch_assoc()) {
$data[] = $ligne;
}
//Afficher le tableau au format JSON
echo json_encode($data);
$bdd =null;
?>
mon code ne retrouve pas cette ligne dans ma bdd.
Mon code php fonctionne pourtant très bien car il peut me retrouver d'autres lignes sans problème, par exemple:
$reponse = $bdd->query("SELECT * FROM database_cas WHERE cas='87-44-5'");
J'en conclus que suivant les chaines de caractères que je cherche, certaines seraient mal reconnues??? (je n'utilise pourtant que des chiffres et des tirets, exemple: '123-45-6')
Autre exemple, mon code php peut reconnaitre '3B' mais pas '3A'... et la ligne SQL fonctionne bien, elle.
Je n'y comprends rien
Quelqu'un a t-il déjà eu ce souci ou bien je passe à côté de quelque chose et j'écris mal mon code php??
Merci!
NB: Dans ma structure, mon interclassement est du "TEXT" encodé en "utf8_general_ci"
Non, tu as forcément fait une erreur quelque part :
pas la même base de données/table
ce n'est pas le vrai code, tu fais un fetch avant ta boucle et perd ainsi la première ligne
ce n'est pas le vrai code, tu n'as pas mis de quotes niveau SQL donc, par exemple, au lieu de chercher la chaîne '7601-90-3' il cherche le résultat des soustractions soit 7508
ce n'est pas le vrai code, ta valeur comprend des caractères d'espacement ou invisible
Malheureusement, j'ai déjà éliminé toutes ces potentielles erreurs:
- C'est le bon nom de table car il suffit juste de changer mon numéro à chercher et ça peut fonctionner ou pas
- l'histoire du fetch() mal placé c'est pareil, des fois ça fonctionne, des fois pas, suivant le chiffre tapé
- pour les quotes, c'est pareil et j'ai bien mis dans mon exemple exactement ce que je tape sur SQL et sur mon code PHP
- j'ai vérifié les caractères invisibles (copie sur une page wordd): néant. J'ai même effacé ma complètement donnée pour la retaper proprement, et ça marche pas
- j'ai aussi vérifié les histoires de hyphens/dashes qui peuvent faire déconner une requête, c'est pas ça...
Si j'ai bien une erreur dans mon code, je suis preneur! J'ai déjà tout essayé...
Autre élément: je travail actuellement sur WAMP server en local et je me demande si c'est pas ça qui fait tout foirer?
Mauvaise reconnaissance de caractères en SQL PHP
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli