Forum Programmation.SQL problème select

Posté par  .
Étiquettes : aucune
0
6
fév.
2007
Bonjour
Je n'arrive pas à repérer une chaîne «mixte » dans ma BD mysql5.
Ex:
C'est deux requête passent sans problème.
SELECT * FROM `users` WHERE u_pswd = 'pvkrs';
SELECT * FROM `users` WHERE u_pswd LIKE 'pvkrs';

Mais elles trouvent rien dès là présence des chiffres.
SELECT * FROM `users` WHERE u_pswd = '6pvkrs';
SELECT * FROM `users` WHERE u_pswd LIKE '6pvkrs';

Je les ai testées en sur deux machines différente. Toutes les deux MySQL: 5.0.27, phpMyAdmin – 2.9.1.1

J'ai essayé u_pswd en text et en varchar aussi. Ca cause des mêmes problème dans tous les deux cas.

S'agit il d'un problème de syntaxe (moi) ou un bug (système)
Merci pour l'aide.
  • # C'est moi ou ?

    Posté par  . Évalué à 1.

    Salut l'ami,

    Lors de mes cours SQL l'instructeur m'a appris que pour une condition LIKE, il fallait mettre un %

    -> SELECT * FROM `users` WHERE u_pswd LIKE '6pvkrs%'
    -> SELECT * FROM `users` WHERE u_pswd LIKE '%6pvkrs'

    Je ne suis pas sur qu'il s'agisse d'un bug ... aurais-tu une trace d'erreur éventuelle ? Ca pourrait être utile pour débugger ;-)
    • [^] # Re: C'est moi ou ?

      Posté par  . Évalué à 1.

      Merci
      Ca plante qm
      SELECT * FROM `users` WHERE u_pswd LIKE '6pvkrs%'
      SELECT * FROM `users` WHERE u_pswd LIKE '%6pvkrs'
      • [^] # Re: C'est moi ou ?

        Posté par  . Évalué à 1.

        Bonjour,

        Ce qui n'est pas très clair pour moi, c'est ce que tu as dans la base comme données dans u_pswd... ça permettrait de comprendre ce qui ne marche pas !

        Guilhelm
        • [^] # Re: C'est moi ou ?

          Posté par  . Évalué à 1.

          Les données sont du texte .

          Je pense que ça déconne dans ma procédure stocké ça tourne quand j'ajoute manuellement mais ça déconne dès que j'utilise « stor proc ».


          CREATE DEFINER=`root`@`localhost` PROCEDURE `add_user_csv`(user TEXT,psd TEXT, mdp TEXT, gName TEXT, name TEXT)


          BEGIN
          DECLARE user_n TEXT;DECLARE user_p TEXT; SET user_n = 'existpas';SET user_p = 'existpas';
          IF EXISTS(SELECT u_pseudo FROM users WHERE u_pseudo = psd LIMIT 1)
          THEN
          SET user_p = 'exist';
          END IF;
          IF EXISTS(SELECT u_gname, u_name FROM users WHERE u_gname = gName AND u_name = name LIMIT 1)
          THEN
          SET user_n = 'exist';
          END IF;
          IF user_n != 'exist' AND user_p != 'exist'
          THEN
          INSERT INTO `users`(`u_status` , `u_pseudo` , `u_pswd` , `u_gname`, `u_name`) VALUES ( user, psd, mdp, gName, name);
          END IF;
          END

          C'est bête parce que les données sont en place les seule bug est ce lui que je viens d'évoquer dans le message précédent.
          • [^] # Re: C'est moi ou ?

            Posté par  . Évalué à 1.

            J'ai avancé un peu
            Ca fonctionne si j'utilise
            SELECT * FROM `users` WHERE u_pswd LIKE '%mdp%';
            ou
            SELECT * FROM `users` WHERE u_pseudo LIKE '%user_name%';

            Mais ça plante quand je concatène les deux
            SELECT * FROM `users` WHERE u_pswd LIKE '%rbn3m%' AND u_pseudo LIKE '%LEGRANDM %';
            • [^] # Re: C'est moi ou ?

              Posté par  . Évalué à 1.

              Ca y est ça fontionne voilà la requête
              "SELECT u_id,u_pseudo,u_pswd,u_status,u_name,u_gname FROM `users` WHERE u_pswd LIKE '%".$pswd."%' && u_pseudo LIKE '%".$psd."%'";
      • [^] # Re: C'est moi ou ?

        Posté par  . Évalué à 2.

        Oui Zeb c'était les jokers

        -> SELECT * FROM `users` WHERE u_pswd LIKE '6pvkrs%' plantait
        -> SELECT * FROM `users` WHERE u_pswd LIKE '%6pvkrs' plantait

        finalement c'était SELECT * FROM `users` WHERE u_pswd LIKE '%6pvkrs%'


        Ce qui donne

        "SELECT u_id,u_pseudo,u_pswd,u_status,u_name,u_gname FROM `users` WHERE u_pswd LIKE '%".$pswd."%' && u_pseudo LIKE '%".$psd."%'";


        Merci pour l'aide

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.