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
A voir également:
- PDO problème d'Update
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Nettoyage windows update - Guide
- Wsus offline update - Télécharger - Systèmes d'exploitation
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 !
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 !
Sans compter que dans ton ca précis, c'est complètement inutile de faire
Ça veut dire que tu remplaces la valeur de iddomaine par elle-même ...
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();