probleme prepare et execute

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme prepare et execute

Re: probleme prepare et execute

par stealth35 » 15 avr. 2010, 14:27

Merci pour cette réponse rapide, donc le exécute ne marche que si les marqueurs sont des chaînes sinon il faut utiliser bindParam apparemment...
voila, enfin attention y'a une difference entre bindParam et bindValue, je te conseil plutôt d'utiliser bindValue.

Re: probleme prepare et execute

par aquaz » 15 avr. 2010, 14:24

Merci pour cette réponse rapide, donc le exécute ne marche que si les marqueurs sont des chaînes sinon il faut utiliser bindParam apparemment...

Re: probleme prepare et execute

par stealth35 » 15 avr. 2010, 13:43

c'est normale, dans ce cas la faut faire :
$req = $bdd->prepare('SELECT pseudo, message FROM miniChat ORDER BY id DESC LIMIT ? , ?');
$req->bindValue(1, $begin, PDO::PARAM_INT);
$req->bindValue(2, MAX, PDO::PARAM_INT);
$req->execute();
dixit la doc :
Un tableau de valeurs avec autant d'éléments qu'il y a de paramètres à associer dans la requête SQL qui sera exécutées. Toutes les valeurs sont traitées comme des constantes PDO::PARAM_STR.
http://www.php.net/manual/fr/pdostatement.execute.php


ducoup comme il les prend en string il les quote ce qui donne (par exmple)
SELECT pseudo, message FROM miniChat ORDER BY id DESC LIMIT '0' , '5'

probleme prepare et execute

par aquaz » 15 avr. 2010, 13:18

Bonjour,
J'ai un souci avec les requêtes préparés avec PDO:
ce code marche très bien:
$req = $bdd->query("SELECT pseudo, message FROM miniChat ORDER BY id DESC LIMIT ". $begin . "," . MAX);
mais dès que je veux utiliser une requête préparée pour éviter de concaténer les variables ca marche plus:
$req = $bdd->prepare('SELECT pseudo, message FROM miniChat ORDER BY id DESC LIMIT ? , ?');
$req->execute(array($begin,MAX));
j'ai essayé aussi de transtyper $begin et MAX en string sans succès
Mais bizaremment ca marche avec $req->bindParam et bindValue...