Requête Update et Delete en PDO

Résolu
modemo2018 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
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());
    }


 
A voir également:

4 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 !
1
jee pee Messages postés 41560 Date d'inscription   Statut Modérateur Dernière intervention   9 729
 
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/...


0
modemo2018 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   2
 
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());
    }	

0
jee pee Messages postés 41560 Date d'inscription   Statut Modérateur Dernière intervention   9 729
 
Ma remarque précédente N°1 reste valable. Si pas d'action dans la bdd et pas de message d'erreur, c'est que ton code n'est pas exécuté. Tu ne passes pas par où tu crois dans ton application.

Ou idmat et/ou ideleve pas/mal renseignés. Là pas d'action et pas de message d'erreur.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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?
0
modemo2018 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   2 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
$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
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > modemo2018 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention  
 
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?
0
modemo2018 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   2 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
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
0
modemo2018 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   2
 
Excuse moi, mais ta reponse m'aide pas à resoudre mon problème, j'ai du mal à bien te comprendre
0