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 PDO sur SELECT [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut Erreur PDO sur SELECT
    Bonjour,

    J'ai un souci sur une requête préparée et je ne trouve pas d'où vient l'erreur, un regard neuf pourra sûrement m'aider.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    		//l'article existe t-il, appartient-il à l'utilisateur 
    			$sql_test_validite = $bdd->prepare("SELECT u_id, a.id_article,id_type_article FROM pevtt_article_utilisateur a"
    												. "LEFT JOIN pevtt_article_type_article b ON a.id_article = b.id_article"
    												. "WHERE u_id = :u_id"
    												. "AND a.id_article = :id_article_a_modifier"
    												. "AND id_type_article = :id_type_article");
     
    			$sql_test_validite->execute(array(
    										":u_id" => $fsb->userdata('u_id'),
    										":id_article_a_modifier" => $id_article_a_modifier,
    										":id_type_article" => $id_type_article
    										));
    			$tab_test_validite = $sql_test_validite->fetch();

    Erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in /homepages/23/d281297373/htdocs/admin/php/articles/rediger_article.php:49 Stack trace: #0 /homepages/23/d281297373/htdocs/admin/php/articles/rediger_article.php(49): PDOStatement->execute(Array) #1 {main} thrown in /homepages/23/d281297373/htdocs/admin/php/articles/rediger_article.php on line 49
    Ligne 49 :

    Apparemment, il y a un souci avec le troisième paramètre mais je ne comprends pas lequel.

    Par avance, merci de votre aide.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ce message d'erreur peut signifier que la liste des paramètres que tu passes à execute contient au moins un paramètre qui n'est pas dans la requête ou ne contient pas un paramètre de la requête (la plupart du temps, c'est une faute de frappe bête du genre id_atricle au lieu id_article)
    Dans ton cas, c'est plus tordu : c'est la concaténation de ta requête qui est incorrecte. Si tu fais un echo de ta requête, tu vas obtenir ça :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT u_id, a.id_article,id_type_article FROM pevtt_article_utilisateur aLEFT JOIN pevtt_article_type_article b ON a.id_article = b.id_articleWHERE u_id = :u_idAND a.id_article = :id_article_a_modifierAND id_type_article = :id_type_article
    Ce qui a peu de chances de fonctionner
    Ajoute des espaces au début et à la fin de chaque morceau de la concaténation et ça marchera beaucoup mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req = "SELECT u_id, a.id_article,id_type_article FROM pevtt_article_utilisateur a "
                                                    . " LEFT JOIN pevtt_article_type_article b ON a.id_article = b.id_article "
                                                    . " WHERE u_id = :u_id "
                                                    . " AND a.id_article = :id_article_a_modifier "
                                                    . " AND id_type_article = :id_type_article ";
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Bonjour et merci,

    Bien joué, c'était ça !

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

Discussions similaires

  1. [MySQL] Erreur PDO sur update
    Par heretik25 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/11/2011, 14h47
  2. erreur 9 sur select sur 1 PC sur 7
    Par nanie_38 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/02/2010, 11h51
  3. erreur 1004 sur une méthode select
    Par lollo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2008, 19h21
  4. Erreur IE7 sur la recuperation d'un select
    Par sabotage dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/08/2008, 09h11
  5. erreur sur .Select
    Par ouioui_cmoi dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/04/2008, 12h59

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