Récuperation SQL

Bonjour à tous,
j'ai un petit problème concernant mon code :

Je veux récupérer plusieurs champs dans ma BDD mais j'ai une erreur dans ma requête:
J'exporte mes données dans un Excel mais il y'a une colone que je n'arrive pas à récupérer:

<?php

$req=$pdo->prepare("SELECT nom_uti ,prenom_uti ,birth_uti , titre_en,date_in as DATE_IN,date_ou,mensuel_mouvement ,code_contrat ,start_contrat,end_contrat ,expiration_contrat ,titre_bateau ,num_certificat

FROM utilisateur,mouvement,boat,contract,function,contract_module

where utilisateur.id_uti=mouvement.id_uti
and mouvement.id_contrat=contract.id_contrat
and mouvement.id_contrat=boat.id_contrat
and mouvement.id_bateau=boat.id_bateau and mouvement.fonction_mouvement=function.id_function
and num_certificat not like 'L%'");

Mon erreur se situe au niveau du not like je 'narrive pas à trouver la syntaxe correcte tandis que en SQL ma requête marche.

merci de vos réponse

13 réponses

  1. Salut !

    Tu es sur que l'erreur vient de la ?

    Essaye ca :
    $req=$pdo->prepare(" ta requete");
    $req->execute() or die(print_r($req->errorInfo()));
    Et si t'as une erreur il te l'affichera :)

    0
    1. Salut Jérémy

      Oui Oui c'est bien à la ligne là,
      mais je voudrais savoir en gros quel est la syntaxe en PHP
      d'un NOT LIKE
      car la syntaxe SQL marche parfaitement bien sur PhpMyAdmin

      Cordialement
      0
      1. Quel est le type de num_certificat ? Si c'est un int, tu ne peux pas utilisé le LIKE. Par contre si c'est un varchar, ca devrait allé.
        Tu cherches bien les lignes où num_certificat ne commence pas par L ?
        0
        1. C'est exactement ça j'ai deux type de num_certificat :

          ex: L164654 et un autre type 138466

          et donc je veux récupérer les lignes qui n'ont pas le L
          0
          1. Donc c'est un varchar ?

            Mmh tu n'as pas préciser la table où est num_certificat,
            where utilisateur.id_uti=mouvement.id_uti
            and mouvement.id_contrat=contract.id_contrat
            and mouvement.id_contrat=boat.id_contrat
            and mouvement.id_bateau=boat.id_bateau
            and mouvement.fonction_mouvement=function.id_function
            and num_certificat not like 'L%'");

            0
            1. Même pas c'est un type text

              et si, la table de num_certificat est contract_module
              0
              1. Bah essaye avec contract_module.num_certificat not like 'L%'

                Sinon tu as mis le or die() ?
                Tu as eu un message ?

                0
                1. Alors j'ai essayer avec ta méthode,

                  http://puu.sh/39BpX.png

                  Ci-dessus un lien de l'erreur que j'ai eu avec ta méthode

                  http://puu.sh/39BsW.png

                  Et la l'erreur avec le code que j'avais poster =(
                  0
                  1. Il faut que tu mette bien les nom de table devant chaque nom de colonne quand tu fais des requetes sur plusieurs table.
                    Car là tu le fais dans le where, mais pas dans le select.

                    Et renvois ta requete aussi (modifier) :)
                    0
                    1. $req=$pdo->prepare("SELECT nom_uti ,prenom_uti ,birth_uti , titre_en,date_in as DATE_IN,date_ou,mensuel_mouvement ,code_contrat ,start_contrat,end_contrat ,expiration_contrat ,titre_bateau ,num_certificat

                      FROM utilisateur,mouvement,boat,contract,function,contract_module

                      where utilisateur.id_uti=mouvement.id_uti
                      and mouvement.id_contrat=contract.id_contrat
                      and mouvement.id_contrat=boat.id_contrat
                      and mouvement.id_bateau=boat.id_bateau and mouvement.fonction_mouvement=function.id_function
                      and num_certificat not like 'L%'");

                      Ma requête

                      La tienne

                      $req=$pdo->prepare("SELECT nom_uti ,prenom_uti ,birth_uti , titre_en,date_in as DATE_IN,date_ou,mensuel_mouvement ,code_contrat ,start_contrat,end_contrat ,expiration_contrat ,titre_bateau ,num_certificat

                      FROM utilisateur,mouvement,boat,contract,function,contract_module

                      where utilisateur.id_uti=mouvement.id_uti
                      and mouvement.id_contrat=contract.id_contrat
                      and mouvement.id_contrat=boat.id_contrat
                      and mouvement.id_bateau=boat.id_bateau and mouvement.fonction_mouvement=function.id_function
                      and contract_module.num_certificat not like 'L%'");
                      0
                      1. Mais le pire c'est que si je n'ajoute pas cette ligne tout mon export sur Excel marche
                        0
                    2. Ok donc c'est vraiment à cette ligne la ...

                      Bah met aussi les noms de table dans le select, si tu veuxpas te faire chier tu as cette syntaxe :

                      select p.nom, p.prenom, v.nom
                      from personne p, ville v
                      where p.ville = v.nom

                      0
                      1. Ok d'accord
                        Merci de tes réponses je vais test alors =)
                        0
                        1. Oublie pas le or die(), et si t'as une erreur dis la moi :)
                          0