IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème d'exécution DELETE en sql


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 23
    Points : 13
    Points
    13
    Par défaut Problème d'exécution DELETE en sql
    Bonjour à tous,

    je suis bloqué depuis plusieurs heures maintenant sur le même problème.

    J'affiche dans un tableau html, des données que je récupère d'une bdd sql. Jusqu'ici pas de problème. Tout s'affiche parfaitement, mais lorsque j'essaie de supprimer une ligne (grâce à ma fonction suppr) rien en se passe.

    J'arrive bien récupérer le partenaire_id dans mon url, mais lorsque je clique sur suppr dans mon tableau, j'arrive sur une page blanche, et rien ne s'efface dans ma bdd.

    Voici donc les lignes qui posent problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function suppr($id){
    			$reponse = $bdd->exec('DELETE FROM partenaires WHERE partenaire_id= $id');
    			$reponse->execute();
    			$reponse->closeCursor();
     
     }
     
    if(isset($_GET['suppr'])){
    	suppr($_GET['suppr']);
    }

    Ainsi qu'une partie de mon tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     <tr>
        <th><?php echo $donnees['partenaire_id']; ?>	</th>
        <th><?php echo $donnees['partenaire_nom']; ?> </th>
    	<th><?php echo $donnees['partenaire_prenom']; ?> </th>
        <th><?php echo $donnees['partenaire_fonction']; ?> </th>
        <th><?php echo $donnees['partenaire_email']; ?></th>
        <th><?php echo $donnees['partenaire_password']; ?> </th>
        <th><?php echo $donnees['partenaire_id']; ?>  </th>
          <th> <a href=""> Modif.</a> </th>
        <th> <?php echo '<a href="?suppr='. $donnees['partenaire_id'].'">' ; ?>  Suppr </a> </th>
        </tr>
    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Trois erreurs liées à une même ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = $bdd->exec('DELETE FROM partenaires WHERE partenaire_id= $id');
    • Vraisemblablement une erreur de portée : la variable $bdd est inconnue de la fonction supp ;
    • Une erreur de syntaxe : les variables ne sont pas interpolées (ie remplacées par leurs valeurs) au sein d'une chaîne délimitée par des singles quotes. Il faut en utiliser des doubles sinon une requête préparée qui permettrait de supprimer la potentielle injection SQL au niveau du paramètre $_GET['suppr'] (sinon au moins une cast, même interne, avant d'intégrer ce paramètre à la requête) ;
    • La méthode exec ne renvoie pas un objet PDOStatement mais un entier représentant le nombre de lignes affectées (voir FALSE en cas d'erreur). Par conséquent, les appels à la méthode execute ainsi qu'à closeCursor n'auraient pas lieu d'être ici.


    Et un environnement de développement affichant les erreurs (display_errors à On), ça peut être pratique.

  3. #3
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    J'ajouterai que passer dans l'url l'id a supprimer est pas vraiment sécurisé...au moins tester si c'est un entier avant de balancer la requete de suppression (histoire de toujours avoir une base de données le lendemain)

Discussions similaires

  1. [AC-2007] Problème d'exécution de requête SQL
    Par Blado_sap dans le forum VBA Access
    Réponses: 1
    Dernier message: 29/01/2015, 09h08
  2. Réponses: 2
    Dernier message: 24/04/2007, 00h18
  3. Réponses: 1
    Dernier message: 13/12/2006, 14h18
  4. problème d'exécution d'un requête SQL!
    Par binhjuventus dans le forum C++Builder
    Réponses: 5
    Dernier message: 12/07/2006, 04h21
  5. [SQL] Problème d'exécution et d'affichage de requête !
    Par gabyloux dans le forum PHP & Base de données
    Réponses: 44
    Dernier message: 30/03/2006, 19h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo