Requête Update et Delete en PDO [Résolu]

Signaler
Messages postés
202
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
19 septembre 2020
-
Messages postés
29743
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 octobre 2020
-
Bonjour,
Je suis entrain de créer une page me permettant de supprimer ou modifier une base de donnée, quand j'execute ma requête au lieu de supprimer ou de modifier la donnée, il ya insertion de la même donnée, ce que je n'arrive pas à comprendre,
Mes connaissances en PDO mysql sont un peu limité, est-ce la bonne manière d'écrire une telle requête en PDO?
quelqu'un peut-il m'aider?

 
try {
  
    $sql = 'UPDATE note SET notemat = :notemat WHERE idmat = :idmat, ideleve = :ideleve';
    $datas = array('notemat' => $notemat,'idmat' => $idmat,'ideleve' => $ideleve );
   
  
  } catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  } 
} 



 
try
    {  
 $req2 = $bdd->prepare('DELETE FROM note WHERE idmat = ? AND ideleve = ?');
 
 $req2->execute(array($idmat, $ideleve));
    
  }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }


 

4 réponses

Messages postés
29743
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 octobre 2020
2 842
En complément :

//Mise à jour :
$sql = 'UPDATE note SET notemat = ? WHERE idmat = ? AND ideleve = ?';
$datas = array($notemat, $idmat, $ideleve);
try{
  $req = $bdd->prepare($sql);
  $req->execute($datas);  
} catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }	
}		


//Suppression
$sql = 'DELETE FROM note WHERE idmat = ? AND ideleve = ?';
$datas = array($idmat, $ideleve);
try{
  $req = $bdd->prepare($sql);
  $req->execute($datas);  
} catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }	
}		
	

Comme tu peux le voir, le bloc
try{
  $req = $bdd->prepare($sql);
  $req->execute($datas);  
} catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }	
}		
	

reste toujours le même...

La seule chose qui chose se sont les variables $sql et $datas

Pas besoin non plus de mettre des noms de variables différents à chaque requête ... $req ça suffit !
Messages postés
29777
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
13 octobre 2020
6 822
Bonjour,

Je n'utilise toujours pas mysql et php, mais je suis toujours disponible pour te donner mes observations ;-)

1/ sans insert impossible de rajouter des lignes. Donc ce qui s'exécute n'est pas le code que tu penses, et donc pas tes extraits update, delete

2/ sur ces 2 ordres sql tu n'utilises même pas le même type de formulation, c'est n'importe quoi, il faut être cohérent

3/ il te faut reprendre tes questions précédentes sur le forum, jordane45 notamment t'a donné des exemples de syntaxes des ordres sql à suivre. Si tu ne tiens pas compte des remarques et ne capitalise avec les expériences passées, tu ne peux pas progresser.

4/ dans la syntaxe de base d'un update, on ne sépare pas les conditions du WHERE par une virgule, mais par un opérateur AND/OR/...


Messages postés
202
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
19 septembre 2020

Après quelques recherches, j'ai fait des modifications mais les deux requête ne s'execute pas, il ya pas modification dans la base de donnée, et je n'ai pas un message d'erreur



try {
  
$req5 = $bdd->prepare('UPDATE note SET notemat = ? WHERE idmat = ? AND ideleve = ?');
	
$req5->execute(array($notemat, $idmat, $ideleve));  
  
  } catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }	
}		

	
	
try
    {		
 $req2 = $bdd->prepare('DELETE FROM note WHERE idmat = ? AND ideleve = ?');
	
	$req2->execute(array($idmat, $ideleve));
			 
	 }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }	

Messages postés
12606
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
701
bonjour, si je comprends ce que tu essaies de faire, tu supprimes immédiatement les enregistrements que tu viens de modifier? est-ce bien cela que tu veux?
pour comprendre ce que fait ton code, je suggère que tu fasses d'abord une requête pour visualiser les enregistrements.
je vois que tu imprimes $datas. pourquoi?
Messages postés
202
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
19 septembre 2020
>
Messages postés
12606
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020

$datas est imprimé pour m'avertir au cas où il ya erreur lors de l'execution

Oui je veux donner la possibilité de supprimer ou de modifier une donnée dans la BDD

Les enregistrements ont été déjà fait dans une autre page, et ça se passe bien, mais c'est juste la suppression et la modification que je n'arrive pas à faire
Messages postés
12606
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
701 >
Messages postés
202
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
19 septembre 2020

que contient $datas?
pour comprendre ce que fait ton code, je suggère que tu fasses d'abord une requête pour visualiser les enregistrements, juste avant de les mettre à jour ou de les supprimer.
si je comprends bien, tu ne nous montres qu'une partie de ton code, nous avons donc du mal à comprendre.
imprimes-tu un message quand la mise à jour ou la suppression se passe sans erreur?
imprimes-tu les valeurs utilisées dans la clause where?
Messages postés
202
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
19 septembre 2020
>
Messages postés
12606
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020

Oui j'ai pas mis tout le code, mais ma préocupation est de s'avoir si sintaxiquement la manière que j'ai ecris ma requête en PDO est la bonne, car c'est je suis pas encore trop bon en PDO, j'ai plus passé du temps avec Mysqli ou mysql
Messages postés
29743
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 octobre 2020
2 842 >
Messages postés
202
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
19 septembre 2020

Ta question concerne le langage PHP et non mySQL à proprement parler je déplace donc le sujet dans le bon forum.

Sinon, oui la façon dont sont écrit les instructions PHP pour faire tes requêtes en PDO est correcte.
Messages postés
202
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
19 septembre 2020

Excuse moi, mais ta reponse m'aide pas à resoudre mon problème, j'ai du mal à bien te comprendre