PDO problème d'Update

Résolu/Fermé
markaz Messages postés 330 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 16 septembre 2015 - 1 juil. 2013 à 13:14
markaz Messages postés 330 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 16 septembre 2015 - 2 juil. 2013 à 12:34
Bonjour, j'ai un problème avec mon code d'update et je ne vois pas ou se trouve l'erreur.

if (((isset($_POST['titre']) && ($_POST['titre']) != "")) && (isset($_POST['description'])) && (($_POST['description']) != "")){
			
			$titre= mysql_real_escape_string($_POST['titre']);
			$description= mysql_real_escape_string($_POST['description']);
			$statut= mysql_real_escape_string($_POST['statut']);
			$id= mysql_real_escape_string($_POST['id']);
			$photo = "";
			//On exécute la requete 
			
		 try {	
				$query = $connect_db->prepare('UPDATE domaine SET 
											   (iddomaine = :id, 
											   titre = :titre, 
											   description = :description, 
											   photo = :photo, 
											   statut = :statut )
											   WHERE iddomaine = :id)');
                     $query->execute(array(
						   'id' => $id,
						   'titre' => $titre,
						   'description' => $description,
						   'photo' => $photo,    
						   'statut' => $statut
						   ));
					   
			 
			  if ($query){  //La requete s'est exécutée correctement
			  ?>
				<script language=\javascript1.2\>
					alert("Mise a jour effectue avec sucess")
					document.location.href = 'index.php';
				 </script> 
				
			 <?php } 
			 else {  //La requete ne s'est pas exécutée correctement?>
				 <script language="javascript1.2">
					document.location.href = 'echecMiseajour.php';
				 </script> 
				<?php
			 }
   } catch(PDOException $e){
	  echo "<h1>Une erreur s'est produite lors de l'enregistrement</h1>";
  }

$query->closeCursor();


Je n'ai pas de message d'erreur en retour


A voir également:

1 réponse

Bonjour

Tu dis que tu n'as pas de message d'erreur : quel est le problème alors ?

Mais il est clair que ton code a une grosse erreur : il ne faut surtout pas utiliser de mysql_real_escape_string sur les données que tu vas utiliser avec une requête préparée en PDO. Non seulement c'est inutile car l'exécution des requêtes préparées a son propre système d'échappement, mais en plus ça altère les données que tu vas insérer ou mettre à jour !
0
Utilisateur anonyme
1 juil. 2013 à 14:13
Je vois de plus que tu as utilisé deux fois :id : il me semble (pas vraiment sûr) que c'est interdit. Utilise id1 et id2, même si tu leur donnes la même valeur.
Sans compter que dans ton ca précis, c'est complètement inutile de faire
'UPDATE domaine SET  (iddomaine = :id, ...) WHERE iddomaine = :id
Ça veut dire que tu remplaces la valeur de iddomaine par elle-même ...
0
markaz Messages postés 330 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 16 septembre 2015 5
2 juil. 2013 à 12:34
Le problème a été résolu:

Code final

if (!empty($_POST['titre']) && !empty($_POST['description'])) {
           
		   try {
			$query = $connect_db->prepare('UPDATE domaine SET 
			    titre = :titre, 
				description = :description, 
				statut = :statut 
			    WHERE iddomaine = :id');
			
			$success = $query->execute(array(
				':id' => $_POST['id'],
				':titre' => $_POST['titre'],
				':description' => $_POST['description'],
				':statut' => $_POST['statut']
			));
					
				if($success){

			    echo "<script language=\javascript1.2\>
					alert(\"Mise a jour effectue avec sucess\")
					document.location.href = 'index.php';
				 </script> ";
				
			 } 
			 else {
				 echo "<script language=\javascript1.2\>
					alert(\"Mise a jour a echoue\")
					document.location.href = 'index.php';
				 </script> ";
			 }
			 
			 } 
			 
            catch(PDOException $Exception){
				echo $Exception->getMessage();
	           
            }
		}
		else { ?>
				<script language=\javascript1.2\>
					alert("Mise a jour a echoue, certains champs sembles vides")
					document.location.href = 'modifier-article.php';
				 </script> 
				
			 <?php
		}
	  $query->closeCursor();
0