Page 1 sur 1

(Résolu) Update avec PDO

Posté : 16 oct. 2011, 14:30
par brother
Bonjour,

Je test avec PDO cette requète qui fonctionne très bien, elle enregistre 1 dans la table...

$stmt = $idcom->prepare("UPDATE table SET mail=1 WHERE login_confirm like :login_confirm ");
          $stmt->bindParam(':login_confirm', $login_confirm);
          $stmt->execute();

La session mail fonctionne très bien aussi sur ma page, par contre je n'arrive pas a enregistrer l'adresse mail à la place du chiffre (1) comme ceci :

$stmt = $idcom->prepare("UPDATE table_client SET mail="'.($_SESSION['mail']).'" WHERE login_confirm like :login_confirm ");
          $stmt->bindParam(':login_confirm', $login_confirm);
          $stmt->execute();

Peut-on avec PDO et UPDATE, enregistrer l'adresse mail comme ceci .... $_SESSION['mail'] ?
J'ai essayé en déclarant :
$mail = $_SESSION['mail'];
$stmt = $idcom->prepare("UPDATE table_client SET mail=$mail WHERE login_confirm like :login_confirm ");
          $stmt->bindParam(':login_confirm', $login_confirm);
          $stmt->execute();



Et pareil ça ne fonctionne pas .

Merci pour ce coup de pouce .
Cordialement.

Re: Update avec PDO

Posté : 16 oct. 2011, 14:43
par Ryle
Il te faut modifier ta requête et passer ta nouvelle valeur dans la liste des paramètres comme tu le fais pour la valeur de :login_confirm (ce qui accessoirement permet de contrôler et protéger ta valeur)

Tu peux aussi le faire directement dans la chaine de ta requête comme tu as tenté de le faire, cependant il ne faut pas oublier que dans la requête sql générée, les chaines doivent être délimitées par des apostrophes :)

Re: Update avec PDO

Posté : 16 oct. 2011, 17:55
par moogli
salut,

je n'intervient pas sur le coté php c'est déja fait mais sur le coté SQL.
Pourquoi utilise like ?
UPDATE table SET mail=1 WHERE login_confirm like :login_confirm

ce que tu fait est une égalité autant utiliser le bon opérateur => UPDATE table SET mail=1 WHERE login_confirm=':login_confirm';

@+

Re: Update avec PDO

Posté : 16 oct. 2011, 21:56
par brother
Bonjour,

Merci Moogli, mais je n'ai aucun changement sur ma requète.

$mail = $_SESSION['mail'];
							
$stmt = $idcom->prepare("UPDATE table SET mail = $mail WHERE login_confirm=':login_confirm'");
          $stmt->bindParam(':login_confirm', $login_confirm);
          $stmt->execute(); 

Après validation je n'ai aucune erreur, rien ne se passe !
Même si je mais $mail entre ' ' comme ça : '$mail'
Je retrouve $mail dans la bdd au même titre que le chiffre 1...
C'est à dire pas l'adresse mail en tant que telle ...

Vers quoi dois-je m'orienter pour trouver la solution ?
Merci

Re: Update avec PDO

Posté : 16 oct. 2011, 22:53
par Ryle
dans la requête sql générée, les chaines doivent être délimitées par des apostrophes
Ca inclus aussi les chaines qui sont contenues dans des variables ;)

Re: Update avec PDO

Posté : 16 oct. 2011, 23:10
par moogli