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

Langage PHP Discussion :

Problème avec PDOStatement [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Problème avec PDOStatement
    Bonjour à tous,

    J'ai cherché dans la FAQ et ce qui a déjà été posté mais je n'ai rien trouvé qui correspondait à mon problème.

    Je m'explique :

    j'ai un formulaire sur ma page web sur laquelle l'utilisateur remplit certains champs.
    Je transmet en post les infos saisies à mon script php qui va les traiter.
    J'affecte ensuite chaque champ à une variable :

    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
    29
    30
    31
    32
    33
     
    if(isset($_POST['checkRecycle']))
    			$isRecycle = 1;
    		else
    			$isRecycle = 0; //checkbox
    		$confidentiel1          = $_POST['confidentiel1'];
    		$dateMontage          = $_POST['champDateMontage'];
    		$codeConteneur       = $_POST['numConteneur'];
    		$composant1           = $_POST['composant1']; 
    		$composant2           = $_POST['composant2']; 
    		$confidentiel2          = $_POST['confidentiel2'];
    		$composant3           = $_POST['composant3']; 
    		$composant4           = $_POST['composant4']; 
    		$composant5           = $_POST['composant5']; 
    		$composant6           = $_POST['composant6']; 
    		$composant7           = $_POST['composant7']; 
    		$commentaire          = $_POST['commentaire'];
    		if(isset($_POST['shunt']))
    			$shunt     = $_POST['shunt'];
    		else
    			$shunt     = 0;
     
                   $idConteneur = $bdd->prepare('SELECT idConteneur FROM CONTENEUR WHERE codeConteneur = :codeConteneur');
    		$idConteneur->execute(array(
    									'codeConteneur' => $codeConteneur
    									)
    								);
     
                   $idMessage   = $bdd->prepare('SELECT idMessage   FROM MESSAGE   WHERE   texteMessage = :contenuMessage');
    		$idMessage->execute(array(
    								  'contenuMessage' => $commentaire
    								 )
    							);
    J'ai ensuite une requête qui met permet d'insérer mes infos dans ma base de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $reqAjoutTabMontage = $bdd->prepare('INSERT INTO MONTAGE(dateMontage, nbShuntMontage, recycleMontage, idConteneur, idMessage) VALUES (:dateMontage, :nbShuntMontage, :recycleMontage, :idConteneur, :idMessage)');
    		$reqAjoutTabMontage->execute(array(
    											'dateMontage'      => $dateMontage,
    											'nbShuntMontage'   => $shunt,
    											'recycleMontage'   => $isRecycle,
    											'idConteneur'      => $idConteneur,
    											'idMessage'        => $idMessage
    										  )
    									);
    Et c'est là qu'apparaît mon problème.

    Catchable fatal error: Object of class PDOStatement could not be converted to string in /var/www/Plateforme/includes/functions/function.ajoutMontage.php on line 80
    La ligne 80 correspond à ");" j'en déduit donc que l'erreur se situe dans le dernier execute.

    J'ai fait un var_dump de mes variables et obtient :

    int(1) string(4) "xxxx" string(10) "06/15/2015" string(13) "confidentiel1" string(10) "composant1" string(10) "composant2" string(13) "confidentiel2" string(10) "composant3" string(10) "composant4" string(10) "composant5" string(10) "composant6" string(10) "composant7" string(12) "commentaires" string(1) "4"
    object(PDOStatement)#2 (1) { ["queryString"]=> string(70) "SELECT idConteneur FROM CONTENEUR WHERE codeConteneur = :codeConteneur" }
    Le problème est donc sur le code conteneur qui est un object.
    Je ne sais pas trop comment résoudre ce problème et ne comprend pas le "could not be converted to string" sachant que je cherche un int.

    Merci à ceux qui prendront le temps de lire et de répondre !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu contrôles $idConteneur tu verras que c'est n'est pas un int mais bien un objet PDO.

    Tu as oublié l'étape du fetch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $sth= $bdd->prepare('SELECT idConteneur FROM CONTENEUR WHERE codeConteneur = :codeConteneur');
    $sth->execute(array(':codeConteneur' => $codeConteneur));
    $row = $sth->fetch(PDO::FETCH_ASSOC);
    $idConteneur = $row['idConteneur'];
     
     
    $sth= $bdd->prepare('SELECT idMessage   FROM MESSAGE   WHERE   texteMessage = :contenuMessage');
    $sth->execute(array(':contenuMessage' => $commentaire));
    $row = $sth->fetch(PDO::FETCH_ASSOC);
    $idMessage = $row['idMessage'];
    C'est personnel mais je trouve que l'abus de mise en forme nuit à la lisibilité.
    4 lignes pour la commande execute qui n'a qu'un seul paramètre je trouve cela exageré.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Ca marche ! Merci beaucoup à toi pour ta réponse efficace et rapide

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

Discussions similaires

  1. [PDO] Problème avec PDOStatement->prepare() et variables de session
    Par blackerangel dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 24/12/2010, 16h43
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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