Problème WHERE sql ignoré

Résolu
juliendefully Messages postés 50 Statut Membre -  
juliendefully Messages postés 50 Statut Membre -
Bonjour,
J'ai un problème avec une requête SQL que j'ai préparé, tout fonctionne sauf que le WHERE n'est pas pris en compte, donc toutes les entrées sont modifiées.

Je mets mon code ci-dessous, si quelqu'un voit qu'elle est l'erreur.

Merci

<?
$bdd = new PDO(`mysql:host=XXXX;dbname=XXXX;charset=utf8', `XXXX', `XXXX');
$req = $bdd->prepare('UPDATE clients SET nom = :nom, prenom = :prenom; adresse = :adresse, ville = :ville, npa = :npa, telephone1 = :telephone, email = :email, civilite = :civilite, remarque = :remarque, tension = :tension, douleur = :douleur, enceinte = :enceinte, allergie = :allergie, maladie = :maladie, operation = :operation WHERE id_client = :idclient');
$req->execute(array(
 'idclient' => $_POST['aidclient'],
 'civilite' => $_POST['acivilite'],
 'nom' => $_POST['anom'],
 'prenom' => $_POST['aprenom'],
 'telephone' => $_POST['atelephone'],
 'email' => $_POST['aemail'],
 'adresse' => $_POST['aadresse'],
 'ville' => $_POST['aville'],
 'npa' => $_POST['anpa'],
 'tension' => $_POST['atension'],
 'douleur' => $_POST['adouleur'],
 'enceinte' => $_POST['aenceinte'],
 'allergie' => $_POST['aallergie'],
 'maladie' => $_POST['amaladie'],
 'operation' => $_POST['aoperation'],
 'remarque' => $_POST['aremarque']
 ));

//Redirection
?>

1 réponse

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    1 - Utilises les balises PHP complètes ( <?php au lieu de juste <? )

    2 - récupères le contenu de ton $_POST dans des variables ( AVANT de les utiliser ! )

    3 - Sépare les éléments de ta "requête"
    d'un côté le sql, d'un autre l'array de tes variables... et enfin.. l'appelle à la fonction qui l'execute.

    Bref... ça devrait donner un code du genre :
    <?php
    $bdd = new PDO('mysql:host=XXXX;dbname=XXXX;charset=utf8', 'XXXX', 'XXXX');
    
     
     // Récupération propre des variables
     $idclient => isset($_POST['aidclient'])? $_POST['aidclient']:'';
     $civilite => isset($_POST['acivilite'])? $_POST['acivilite'] : '';
     $nom => isset($_POST['anom']) ? $_POST['anom'] : '';
     $prenom => isset($_POST['aprenom']) ? $_POST['aprenom'] : '';
     $telephone => isset($_POST['atelephone']) ? $_POST['atelephone'] : '';
      // etc... je te laisse faire les autres.
     
    // requête 
    $sql = "UPDATE clients 
               SET nom = :nom
    		     , prenom = :prenom
    			 , adresse = :adresse
    			 , ville = :ville
    			 , npa = :npa
    			 , telephone1 = :telephone
    			 , email = :email
    			 , civilite = :civilite
    			 , remarque = :remarque
    			 , tension = :tension
    			 , douleur = :douleur
    			 , enceinte = :enceinte
    			 , allergie = :allergie
    			 , maladie = :maladie
    			 , operation = :operation 
    	  WHERE id_client = :idclient";
     
     // Array contenant les datas pour la requête
    $array_datas = array(
     'idclient' => $aidclient,
     'civilite' => $acivilite,
     'nom' => $anom,
     'prenom' => $aprenom,
     'telephone' => $atelephone,
     'email' => $aemail,
     'adresse' => $aadresse,
     'ville' => $aville,
     'npa' => $anpa,
     'tension' => $atension,
     'douleur' => $adouleur,
     'enceinte' => $aenceinte,
     'allergie' => $aallergie,
     'maladie' => $amaladie,
     'operation' => $aoperation,
     'remarque' => $aremarque
     ); 
     
     
     
    try{
      //exécution de la requete
      $req = $bdd->prepare($sql);
      $req->execute($array_datas);
    
    }catch(Exception $e) {
     // en cas de souci dans l'execution de la requete
      echo $e->getMessage(); 
      print_r($array_datas);
    }
    


    Au passage... tu avais un ";" qui trainait dans ta requête.....
    C'est pour ça qu'il est bien d'y faire des retours à la ligne..histoire qu'elle soit plus lisible !

    0
    1. juliendefully Messages postés 50 Statut Membre 13
       
      Merci beaucoup, j'ai réussi la
      0