+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2012
    Messages : 16
    Points : 5
    Points
    5

    Par défaut [PHP objet & PDO] Requête UPDATE ne passe pas

    Bonjour à tous, alors voici mon problème:
    j'ai un héritage support (mère) et jeux (fille) en objet et dans ma base de données.

    Table:
    support(ref,date_sortie,prix,duree,url,nb_dl)
    jeux(#ref,nom,syn,editeur,config)

    Classe:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    class Jeux extends Support
    {
    	private $nom;
    	private $editeur;
    	private $syn;
    	private $config;
     
    	public function __construct ($ref,$sortie,$prix,$duree,$url,$dl,$nom,$editeur,$syn,$config)
    	{
    		parent::__construct($ref,$sortie,$prix,$duree,$url,$dl);
    		$this -> nom = $nom;
    		$this -> editeur = $editeur;
    		$this -> syn = $syn;
    		$this -> config = $config;
    	}
    ...
    Ma fonction qui met à jour
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    //connexion BDD
    $con=connectBdd();//appel de la fonction de connexion
    $id=$obj->ref;
     
    //requete
    $req= $con->prepare("UPDATE support SET date_sortie=:date_sortie, prix=:prix, duree=:duree, url=:url WHERE ref=".$id." ;");
    $req->execute(array(
    	'date_sortie'=>$obj->sortie,
    	'prix'=>$obj->prix,
    	'duree'=>$obj->duree,
    	'url'=>$obj->url
    ));
    $req= $con->prepare("UPDATE jeux SET nom=:nom, syn=:syn, editeur=:editeur, config=:config WHERE ref=".$id." ;");
    $req->execute(array(
    	'nom'=>$obj->nom,
    	'editeur'=>$obj->editeur,
    	'syn'=>$obj->syn,
    	'config'=>$obj->config
    ));
     
    //close
    unset($req);
    unset($con);
    Le constructeur de mon objet "Jeux"
    Code :
    $obj=new Jeux(53,'2012-07-17',1000.01,'19:09:09','jeux/hellll.rar',0,'Hellll','BioWare','...Synopsis...','Configuration à la noix');
    Dans ma base de données, la table support est mise à jour correctement. Mais la table jeux ne change pas.
    J'ai d'autres entités fille, et cela marche très bien pour les autres, alors que c'est le même code.

    J'ai essayé de rentrer ma requête en dur dans PgAdmin, et cela marche parfaitement.
    Et avec un var_dump($req), j'obtiens:
    Code :
    1
    2
    object(PDOStatement)[4]
    public 'queryString' => string 'UPDATE jeux SET nom=:nom, syn=:syn, editeur=:editeur, config=:config WHERE ref=53 ;' (length=83)
    J'ai bien ma clause ref de rempli avec le bon numéro.

    Je ne vois pas du tout d'où peut venir mon problème.

  2. #2
    Membre Expert
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    octobre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : octobre 2006
    Messages : 592
    Points : 1 009
    Points
    1 009

    Par défaut

    Salut,

    Je sait pas si ca vient de la mais :

    Note:

    Quelques drivers nécessitent de fermer le curseur avant d'exécuter la requête suivante.
    Essaye comme ca :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    //requete
    $req= $con->prepare("UPDATE support SET date_sortie=:date_sortie, prix=:prix, duree=:duree, url=:url WHERE ref=".$id." ;");
    $req->execute(array(
    	'date_sortie'=>$obj->sortie,
    	'prix'=>$obj->prix,
    	'duree'=>$obj->duree,
    	'url'=>$obj->url
    ));
    $req->closeCursor();
    $req= $con->prepare("UPDATE jeux SET nom=:nom, syn=:syn, editeur=:editeur, config=:config WHERE ref=".$id." ;");
    $req->execute(array(
    	'nom'=>$obj->nom,
    	'editeur'=>$obj->editeur,
    	'syn'=>$obj->syn,
    	'config'=>$obj->config
    ));

  3. #3
    Invité régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2012
    Messages : 16
    Points : 5
    Points
    5

    Par défaut

    Merci pour ton aide et ta réponse rapide.
    C'est vrai que c'est plus propre, mais malheureusement cela ne change pas mon problème.
    La requête ne semble pas s’exécuter, et j'ignore pourquoi.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •