Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mauvaise reconnaissance de caractères en SQL PHP

    7 février 2024 à 14:37:25

    Bonjour,

    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 :euh:

    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"





    -
    Edité par BGr45 7 février 2024 à 15:26:39

    • Partager sur Facebook
    • Partager sur Twitter
      7 février 2024 à 22:47:21

      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

      -
      Edité par julp 7 février 2024 à 22:47:54

      • Partager sur Facebook
      • Partager sur Twitter
        8 février 2024 à 11:54:59

        Merci julp pour ta réponse.

        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?

        • Partager sur Facebook
        • Partager sur Twitter

        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.
        • Editeur
        • Markdown