DELETE et l'ordre d'éxecution de requêtes SQL
Posté : 29 mars 2010, 11:13
Bonjour à tous,
Je suis confronté à un phénomène quelque peu bizarre depuis vendredi.
Je cherche à en comprendre la cause.
Dans un module d'administration j'effectue une action destinée à supprimer un élément de ma base de données.
Petit plus facultatif, j'aurai souhaité qu'un message de confirmation indique "L'élément xxx a bien été supprimé".
Pour afficher xxx, j'effectue donc dans un premier temps une requête SELECT classique pour récupérer les informations de l'élément destiné à être supprimer. Je stocke le nom de l'élément dans une variable $titre, puis j'effectue ma requête DELETE pour supprimer mon élément.
Mais à ma grande surprise, $titre est vide. Comme si mon DELETE passait avant mon SELECT.
J'ai tenté de tourner mon code de différentes manières sans jamais arriver à, à la fois afficher le titre de l'élément, et supprimer ce même élément ensuite.
Si quelqu'un a des infos sur l'ordre des requêtes SQL dans un fichier PHP pour essayer de m'éclairer sur ce phénomène que je ne m'explique pas.
Pour info, je n'ai pas testé en ligne, je suis encore en local avec EasyPHP, est-ce que cela aurait une conséquence ? Je ne pense pas.
Merci d'avoir pris le temps de lire mon problème et merci pour votre contribution.
Pixéo.
Je suis confronté à un phénomène quelque peu bizarre depuis vendredi.
Je cherche à en comprendre la cause.
Dans un module d'administration j'effectue une action destinée à supprimer un élément de ma base de données.
Petit plus facultatif, j'aurai souhaité qu'un message de confirmation indique "L'élément xxx a bien été supprimé".
Pour afficher xxx, j'effectue donc dans un premier temps une requête SELECT classique pour récupérer les informations de l'élément destiné à être supprimer. Je stocke le nom de l'élément dans une variable $titre, puis j'effectue ma requête DELETE pour supprimer mon élément.
Mais à ma grande surprise, $titre est vide. Comme si mon DELETE passait avant mon SELECT.
J'ai tenté de tourner mon code de différentes manières sans jamais arriver à, à la fois afficher le titre de l'élément, et supprimer ce même élément ensuite.
Si quelqu'un a des infos sur l'ordre des requêtes SQL dans un fichier PHP pour essayer de m'éclairer sur ce phénomène que je ne m'explique pas.
Code : Tout sélectionner
if(isset($_GET['id']) && is_numeric($_GET['id'])){ //vérifie que je lui passe bien une id numérique en paramètre d'url
$result = mysql_query("SELECT * FROM `actualites` WHERE id='".$_GET['id']."'");
$row_affiche = mysql_fetch_array($result_affiche);
$titre = $row_affiche['titre']; //sensé stocker le titre de l'élément à supprimer
echo $titre; //sans exécuter le DELETE ci-dessous, il m'affiche bien le titre. Dès que le DELETE est actif, alors $titre retourne une chaîne vide.
}
$result_suppr = mysql_query("DELETE FROM `actualites` WHERE id='".$_GET['id']."'");
if ($result_suppr){
echo "L'élément '".$titre."' a bien été supprimé."; //Même constat que plus haut : sans exécuter le DELETE ci-dessus, il m'affiche bien le titre. Dès que le DELETE est actif, alors $titre retourne une chaîne vide.
}else{
echo "Problème.";
}
Merci d'avoir pris le temps de lire mon problème et merci pour votre contribution.
Pixéo.