Problème WHERE sql ignoré

Résolu/Fermé
juliendefully Messages postés 46 Date d'inscription mardi 9 avril 2013 Statut Membre Dernière intervention 5 janvier 2016 - Modifié par juliendefully le 8/11/2015 à 00:31
juliendefully Messages postés 46 Date d'inscription mardi 9 avril 2013 Statut Membre Dernière intervention 5 janvier 2016 - 8 nov. 2015 à 10:22
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

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
8 nov. 2015 à 01:40
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
juliendefully Messages postés 46 Date d'inscription mardi 9 avril 2013 Statut Membre Dernière intervention 5 janvier 2016 13
8 nov. 2015 à 10:22
Merci beaucoup, j'ai réussi la
0