Page 1 sur 1

pdo update

Posté : 11 août 2014, 13:29
par neomega
bonjour
j'ai un probleme lors de l'update de ma table

je fait ceci :
	$id="1";
			//mise a jour des donnees dans la BDD
			$locat = $db->prepare("UPDATE membre SET(`num_licence`,`nom`, `prenom`, `sexe`, `profession`, `telephone`, `adresse_1`, `adresse_2`, `code_postal`, `ville`, `date_naissance`, `type_licence` , `mineur`, `email`) 
				VALUES ( :licence , :nom , :prenom , :sexe , :profession , :telephone , :adresse_1 , :adresse_2 , :code_postal , :ville , :date_naissance , :type_licence , :mineur , :email ) WHERE id= :id ;");
			$locat->execute(array(
				"id" => $id,
				"licence" => $_POST['licence'],
				"nom" => stripslashes(htmlentities($_POST['nom'])),
				"prenom" => stripslashes(htmlentities($_POST['prenom'])),
				"sexe" => $_POST['sexe'],
				"profession" => $_POST['profession'],
				"telephone" => $_POST['telephone'],
				"adresse_1" => stripslashes(htmlentities($_POST['adresse_1'])),
				"adresse_2" => stripslashes(htmlentities($_POST['adresse_2'])),
				"code_postal" => $_POST['code_postal'],
				"ville" => stripslashes(htmlentities($_POST['ville'])),
				"date_naissance" => $_POST['date_naissance'],
				"email" => $_POST['email'],
				"type_licence" => $_POST['type_licence'],
				"mineur" =>  $_POST['mineur']
							));
				echo "<div class=\"succes\">Votre demande a bien ete enregistrer</div>";
		}
		else{
			echo "<div class=\"erreur\">Votre demande a echoué</div>";
		}
et une fois executer la reponce est : "Votre demande a bien ete enregistrer"
pourtant la mise a jour n'a pas ete faite en BDD

"aucune erreur qui apparaît non plus "

merci par avance de votre aide

Re: pdo update

Posté : 11 août 2014, 14:35
par ynx
Salut,

Par défaut le rapport d'erreur de PDO est en mode silencieux. Pour voir les erreurs tu dois donc définir le mode du rapport d'erreur dans lors de la connexion :
http://php.net/manual/fr/pdo.error-handling.php (voir les exemples)

Au passage tu n'as pas besoin de protéger tes données si tu utilises les requêtes préparées, les injections sql sont automatiquement contrées.
De plus htmlentities doit être utilisé uniquement lors de l'affichage en html, pas lors de l'insertion en bdd, et stripslashes n'est pas utile ici.

Bonne journée

Re: pdo update

Posté : 11 août 2014, 15:47
par neomega
je viens d'essayer comme indiquer sans vérification :
$id="1";
			//insertion des donnees dans la BDD
			$locat = $db->prepare("UPDATE membre SET(`num_licence`,`nom`, `prenom`, `sexe`, `profession`, `telephone`, `adresse_1`, `adresse_2`, `code_postal`, `ville`, `date_naissance`, `type_licence` , `mineur`, `email`) 
				VALUES ( :licence , :nom , :prenom , :sexe , :profession , :telephone , :adresse_1 , :adresse_2 , :code_postal , :ville , :date_naissance , :type_licence , :mineur , :email ) WHERE id= :id ;");
			$locat->execute(array(
				"id" => $id,
				"licence" => $_POST['licence'],
				"nom" => $_POST['nom'],
				"prenom" => $_POST['prenom'],
				"sexe" => $_POST['sexe'],
				"profession" => $_POST['profession'],
				"telephone" => $_POST['telephone'],
				"adresse_1" => $_POST['adresse_1'],
				"adresse_2" => $_POST['adresse_2'],
				"code_postal" => $_POST['code_postal'],
				"ville" => $_POST['ville'],
				"date_naissance" => $_POST['date_naissance'],
				"email" => $_POST['email'],
				"type_licence" => $_POST['type_licence'],
				"mineur" =>  $_POST['mineur']
							));
							
				echo "<div class=\"succes\">Votre demande a bien ete enregistrer</div>";
		}
		else{
			echo "<div class=\"erreur\">Votre demande a echoué</div>";
		}
et la mise a jour ne se fait toujours pas

"une autre idée ?"

Re: pdo update

Posté : 11 août 2014, 16:07
par ynx
As tu bien modifié le mode du rapport d'erreur PDO ?
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Sinon tu peux essayer de contrôler le retour de la méthode execute :
$locat = $db->prepare(/* ...requête préparée... */);
$succes = $locat->execute(array(/* ...paramètres... */));

if (!$succes) {
	echo "\nPDO::errorInfo():\n";
	print_r($locat->errorInfo());
}

Re: pdo update

Posté : 11 août 2014, 17:31
par neomega
en utilisant vote code j'ai cette erreur qui apparaît

Code : Tout sélectionner

PDO::errorInfo(): Array ( [0] => 42000 [1] => 1064 [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(`num_licence`,`nom`, `prenom`, `sexe`, `profession`, `telephone`, `adresse_1`, ' at line 1 )

Re: pdo update

Posté : 12 août 2014, 12:26
par ynx
Donc tu as une erreur de syntaxe dans ta requête sql.

Effectivement, tu confond la syntaxe INSERT avec la syntaxe UPDATE. Corrige ta requête comme ceci :
UPDATE membre SET `num_licence` = :licence, `nom` = :nom, ...etc... WHERE id= :id;
Bonne journée

Re: [RESOLU] pdo update

Posté : 12 août 2014, 23:08
par neomega
merci beaucoup de votre aide

sa marche NIKEL