PDO
smileys
Messages postés
1
Date d'inscription
Statut
Membre
-
yveslands -
yveslands -
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.
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.
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.
yveslands
Merci beaucoup! là je galérai déjà trop. Ça a fonctionner.