PDO

Fermé
smileys Messages postés 1 Date d'inscription vendredi 9 janvier 2009 Statut Membre Dernière intervention 12 mai 2009 - 12 mai 2009 à 15:28
 yveslands - 6 juil. 2009 à 12:37
Bonjour,
j'ai un petit souci avec PDO. Je veux passer en parametres certaines valeurs mais ca m'envoie des erreurs à l'executions du script.
Par exemple dans mon fichier class.php

class user {
$this->selectAll = prepare("SELECT * FROM user LIMIT ?, ?"); // ou

$this->selectAll = prepare("SELECT * FROM user LIMIT :debut, :fin");
}

public function selectAll($debut, $fin) {
$this->selectAll->execute(array($debut, $fin));
}

j'aimerais savoir si la syntaxe est correcte.

merci d'avance.

1 réponse

Salut,
ta syntaxe est bonne c'est juste que par défaut quand tu execute ta requête :
$this->selectAll->execute(array('debut'=>$debut, 'fin'=>$fin));
PDO bind les paramètre comme si c'était des chaîne de caractères alors que SQL lui veut un entier.
PDO par défaut fait un truc du genre :
SELECT * FROM `table` LIMIT "10", "20"
alors que la bonne syntaxe est :
SELECT * FROM `table` LIMIT 10, 20
sans guillemet.
La solution : utiliser la méthode bindParam et lui renseigner le type de la variable que tu lui envoie :
$objetPDO->bindParam(':debut', $debut, PDO::PARAM_INT);
$objetPDO->bindParam(':fin', $fin, PDO::PARAM_INT);

et ensuite un petit $objetPDO->execute(); et ça devrait fonctionner.
2
Merci beaucoup! là je galérai déjà trop. Ça a fonctionner.
0