2012-05-06 2 views
0

J'essaye de mettre à jour un champ dans ma base de données avec 1 chaque fois que l'instruction est vraie. Je ne sais pas comment faire ça. Avec mon code suivant je ne suis pas sûr de ce problèmes (bien que beaucoup de googler):Mettre à jour le champ par 1 PDO

  1. Comment ajouter 1 la valeur des champs existants (vote = vote + 1)
  2. La où la déclaration combinée avec la bindParam. Je ne reçois aucun message d'erreur, même si cela ne fonctionne pas.

Qu'est-ce que je fais mal?

Mon code ressemble à ça (la variable $ id est correct ont imprimé cela et il a le « droit » valeur, $ dbh est également mis à la droite se connecter):

 $stmt = $dbh->prepare("UPDATE rating SET vote = vote+1 WHERE rel_id_product = ':id'"); 
     $stmt->bindParam(':id', $id, PDO::PARAM_STR); 
     $stmt->execute(); 

Répondre

1

Ne pas citer les placeholders. PDO fera pour vous si nécessaire quand il vient le temps de la valeur « insérer » que vous utilisez dans la requête:

... WHERE rel_id_product = :id 
          ^^^--- no quotes 

Aussi, ne var_dump($stmt->execute) et voyez ce que vous obtenez. Si c'est un booléen faux, la requête a échoué. Vous supposez également que l'appel de préparation a réussi et essayez de l'exécuter malgré tout. Ne supposez jamais qu'une opération DB a réussi. Même si la syntaxe SQL est parfaite, il y a beaucoup trop d'autres raisons pour que les choses explosent pour ne pas vérifier cela.

+0

Merci! Cela a fonctionné comme un charme! – Fredrik

Questions connexes