IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Erreur SQL state 07001 avec requete WHERE [ODBC]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 67
    Par défaut Erreur SQL state 07001 avec requete WHERE
    Bonjour à tous,

    Je débute complètement dans la diffusion de ma base Access sur le Web.

    Aprés de longue heures de recherche je butte sur une erreur dont je n'arrive pas à comprendre la cause.

    Je vous expose mon code PHP qui dépend d'un autre fichier php dans lequel l'utilisateur entre l'ID recherché.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?php
    $base="BaseOuvrage_v1.0";
    $user="";
    $pass="";
    $cnx=odbc_connect($base,$user,$pass);
    if( ! $cnx ) echo "Impossible de ce connecter";
    ?>
    <?php
    if ($_POST["RechID"]=="")
    {
    	$Recherche="TdB_Caractéristique.Id_R";
    }
    else
    {
    	$Recherche=$_POST["RechID"];
    }
    $Req = odbc_do($cnx,'SELECT TdB_Caractéristique.Id_R, 
    TdB_Caractéristique.Nom_ouvrage, TdB_Caractéristique.Région, 
    TdB_Caractéristique.Département, TdB_Caractéristique.Commune, 
    TdB_Caractéristique.Propriétaire FROM TdB_Caractéristique 
    WHERE TdB_Caractéristique.Id_R like"'.$Recherche.'"');
    while($data=odbc_fetch_array($Req))
    {
    echo '<b>'.$data['Id_R'].' </b>| '.$data['Nom_ouvrage'].'</br>';
    }
    echo $Recherche
    ?>
    Lorsqu'on ne met rien dans la zone de texte de recherche tout ce passe bien, il m'affiche tous les enregistrements, mais lorsque l'on defini un ID, le code plante avec l'erreur SQL:
    Trop peu de paramètres. 1 attendu., SQL state 07001 etc
    à la ligne 21 qui correspond à la ligne de la commande WHERE.

    N.B.: la dernière ligne avec echo me permettait de voir si ma condition marchait bien.

    une idée ? Merci à vous

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    ton guillemet est collé à ton LIKE

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 67
    Par défaut
    Effectivement j'ai mis un espace mais ça ne résout pas le problème.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 67
    Par défaut
    J'ai pris le problème à l'envers.
    Au début je passais par MySQL,
    En utilisant la même méthode avec la fonction msql_query puis mysql_fetch_assoc ça marche impeccable.

    Je pense donc que le problème viens de la fonction odbc_do().

    Comme je souhaitais avoir une condition dans ma requête pour effectuer une recherche, j'ai aussi essayer odbc_prepare() et odbc_execute() mais sans succès.

    Donc voila une alternative a odbc_do() est peut-être une piste que je m’apprête à suivre.
    Qu'en pensez-vous ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 67
    Par défaut
    Bon et bien ça y est j'ai trouvé!!
    Le probléme ne vient pas de la fonction odbc_do().

    Il s'avére simplement que dans la fonction WHERE dans le code SQL qu'un critére doit être entouré de guillemets lorsqu'il s'agit d'une valeur fixe et NE DOIT PAS être entouré de guillemets lorsqu'il s'agit d'un champs par exemple.

    Dans le cas présent:
    WHERE TdB_Caractéristique.Id_R="XXXXX" pour afficher uniquement cet enregistrement ou
    WHERE TdB_Caractéristique.Id_R=TdB_Caractéristique.Id_R pour afficher tous les enregistrements si la personne n'écrit rien dans la zone de recherche.

    J'ai donc adapter le code fixant la valeur de la variable $Recherche pour qu'elle intégre les guillemets lorsque la personne a rentré une recherche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if ($_POST["RechID"]=="")
    {
    	$Recherche="TdB_Caractéristique.Id_R";
    }
    else
    {
    	$Recherche='"'.$_POST["RechID"].'"'; 
    }
    J'espére que cela vous viendra en aide si besoin, c'est pour cela que je me permet de développer la réponse. Bonne journée à vous et merci comme même à Madfrix

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 67
    Par défaut
    Bon je ne comprends pas ça ne marche plus

    Dés que j'enléve la partie avec WHERE ça marche, mais dés que je rajoute une condition ça foire.
    Que je la mette fixe, propre avec des guillemets ou en variable ça foire tout le temps.
    Il n’accepte que "TdB_Caractéristique.Id_R=TdB_Caractéristique.Id_R" ... super.

    J'ai toujours cette erreur : 07001, trop peu de paramétre !!!!

    Je me suis dis c'est parce que j'ai bidouillé et bien non !!! même en reprenant le code que je vous ai donné ça bug!


    tout ce que je veux faire c'est une requete SQL avec un WHERE pour trier ppllzzzz HEEEELP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb de requete SQL avec clauses WHERE dans une procédure stockée
    Par CocoLeNain dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 11/06/2010, 23h48
  2. update qui ne fonctionne pas ! SQL state 07001 ...
    Par Titiii25 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 24/11/2009, 13h16
  3. Réponses: 3
    Dernier message: 18/09/2006, 20h55
  4. [SQL Server] Problèmes avec un WHERE
    Par Epervier dans le forum Langage SQL
    Réponses: 1
    Dernier message: 08/06/2006, 21h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo