PDO problème d'Update
Résolu
markaz
Messages postés
357
Statut
Membre
-
markaz Messages postés 357 Statut Membre -
markaz Messages postés 357 Statut Membre -
Bonjour, j'ai un problème avec mon code d'update et je ne vois pas ou se trouve l'erreur.
Je n'ai pas de message d'erreur en retour
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
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 !-
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 ... -
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();
-