PDO
smileys
Messages postés
1
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.
A voir également:
- PDO
- Formulaire de connexion php mysql avec PDO ✓ - Forum PHP
- [PDO]Lors de l'execution:SQLSTATE[HY000]: General error: ✓ - Forum PHP
- PDO -> Requète des plus simplistes mais qui ne marche pas ?! ✓ - Forum Webmastering
- CONNECTION PDO message COULD NOT FIND DRIVER ✓ - Forum PHP
- Activer et configurer PDO sous MAMP et Mac OS X Yosemite ✓ - Forum PHP
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.