Précédent   Forum du club des développeurs et IT Pro > PHP > PHP & SGBD > PHP & PostgreSQL
PHP & PostgreSQL Forum d'entraide sur PostgreSQL avec PHP. Avant de poster -> FAQ PostgreSQL, Cours PostgreSQL. Pour les questions concernant le moteur PostgreSQL plutôt que les fonctions PHP, merci d'utiliser le forum PostgreSQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 13/04/2012, 14h56   #1
lynnaryas
Invité régulier
 
Homme
Étudiant
Inscription : 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.
lynnaryas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2012, 15h04   #2
amoiraud
Membre émérite
 
Avatar de amoiraud
 
Homme Adrien
Développeur Web
Inscription : octobre 2006
Messages : 555
Détails du profil
Informations personnelles :
Nom : Homme Adrien
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 : 555
Points : 975
Points : 975
Envoyer un message via MSN à amoiraud
Salut,

Je sait pas si ca vient de la mais :

Citation:
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
));
amoiraud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2012, 15h07   #3
lynnaryas
Invité régulier
 
Homme
Étudiant
Inscription : 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
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.
lynnaryas est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h46.


 
 
 
 
Partenaires

Hébergement Web