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 :

Exercice sur la breve


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2019
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2019
    Messages : 101
    Points : 45
    Points
    45
    Par défaut Exercice sur la breve
    breveManager.php

    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
    34
     
     
    class breveManager {
     
    	private $_db;
     
    	public function __construct($db) {
     
    		$this->setDb($db);
    	}
     
    	public function setDb(PDO $dbh) {
     
    		$this->_db = $dbh;
    	}
     
    	public function addBreve(Breve $breve) {
     
    		$sql = 'INSERT INTO breve(texte, dt_creation) VALUES(:texte, :dt_creation)';
    		$stmnt = $this->_db->prepare($sql);
    		$stmnt->bindParam(':texte', htmlspecialchars($breve->getText()));
    		$stmnt->bindParam(':dt_creation', $breve->getDt_creation());
    		$stmnt->execute();
    	}
     
    public function updateBreve(Breve $breve) {
     
    		$sql = 'UPDATE breve SET texte = :texte, dt_creation = :dt_creation WHERE id = :id';
    		$stmnt = $this->_db->prepare($sql);
    		$stmnt->bindParam(':id', $breve->getId());
    		$stmnt->bindParam(':texte', $breve->getText());
    		$stmnt->bindParam(':dt_creation', $breve->getDt_creation());
    		$stmnt->execute();
    	}
    Message d'erreur -> Remarque: seules les variables doivent être passées ou transmises par référence.

    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    le message d'erreur indique probablement sur quelle ligne, il détecte l'erreur. Merci de préciser.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2019
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2019
    Messages : 101
    Points : 45
    Points
    45
    Par défaut
    ligne 21 22 et 30 31 32

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Comme l'erreur porte sur tous les bindparam, tu peux utiliser une autre syntaxe : $stmnt->execute([':texte'=>htmlspecialchars(($breve)->getText()),':dt_creation'=>($breve)->getDt_creation()]);(faire pareil pour le second execute)

  5. #5
    Membre actif Avatar de Trehinos
    Homme Profil pro
    Analyste développeur PHP
    Inscrit en
    Novembre 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyste développeur PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2012
    Messages : 100
    Points : 232
    Points
    232
    Par défaut
    Dans la documentation (https://www.php.net/manual/fr/pdosta....bindparam.php), on voit le prototype :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public PDOStatement::bindParam ( mixed $parameter , mixed &$variable)
    Le & signifie que le paramètre est passé par référence. Vous tentez de passer le résultat d'une fonction dans votre code, hors un résultat de fonction n'est qu'une valeur, il n'a pas de "référence".

    Il faut passer une variable, forcément, à cette fonction.
    Vous pouvez faire, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $id = $breve->getId();
    $stmnt->bindParam(':id', $id);


    Mais la solution de laurentSc est meilleure. execute([$params...]) est plus simple, très lisible et permet de passer des valeurs.

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2019
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2019
    Messages : 101
    Points : 45
    Points
    45
    Par défaut
    Merci bien, ça marche

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

Discussions similaires

  1. exercice sur les matrices
    Par massimo dans le forum MATLAB
    Réponses: 3
    Dernier message: 22/03/2007, 17h20
  2. besoin d aide sur un exercice sur les pointeurs
    Par azumachakib69 dans le forum C
    Réponses: 3
    Dernier message: 28/12/2006, 01h16
  3. Exercice sur les tableaux
    Par IDE dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 06/11/2006, 19h33
  4. Besoin d'aide pour un exercice sur les registres
    Par zakuza dans le forum Assembleur
    Réponses: 5
    Dernier message: 14/04/2006, 14h23
  5. Réponses: 4
    Dernier message: 28/07/2005, 16h22

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