Page 1 sur 1

PDO - execute avec nombre de critères variables.

Posté : 04 juin 2014, 23:43
par Elie
Hello,

Comment simplifié cette requete qui ne marche pas de toute facon :
		$sql = "SELECT * FROM `tbl_fichier`";
	$sql .= !empty($_POST['du']) && !empty($_POST['au']) ? " WHERE `date` >= UNIX_TIMESTAMP(:du) AND `date` <= UNIX_TIMESTAMP(:au)" : NULL;
	$sql .= " ORDER BY `date` DESC LIMIT 0, :nb";
	$req = $connexion->prepare($sql);
	$execute['nb'] = $_POST['nb'];
	if(!empty($_POST['du']) && !empty($_POST['au'])) { $execute['du'] = $_POST['du']; $execute['au'] = $_POST['au']; }
	$req->execute($execute);
	while($row = $req->fetch(PDO::FETCH_ASSOC)) {
}
Je me prend un peu la tête a remettre tout mon site a jour.
Ca sera plus facile sur mon prochain projet mais là j'ai pas les bases par rapport a mes habitutes.

Re: PDO - execute avec nombre de critères variables.

Posté : 05 juin 2014, 08:03
par xTG
Quelle est l'erreur PDO retournée ?
Sinon j'aurai préféré une chaîne vide plutôt que NULL.

Re: PDO - execute avec nombre de critères variables.

Posté : 05 juin 2014, 18:40
par Elie
Ca ne retourne pas d'erreur mais ca ne retourne pas non plus de resultat ...
Comment si :nb était égal à 0.
Je me sers de querystring pour afficher la requete mais me l'affiche avec :nb et non pas le chiffre remplacé ...

Re: PDO - execute avec nombre de critères variables.

Posté : 05 juin 2014, 19:09
par xTG
Que donnes un :
var_dump($execute);

Re: PDO - execute avec nombre de critères variables.

Posté : 05 juin 2014, 19:24
par Elie

Code : Tout sélectionner

print_r($execute); Array ( [nb] => 20 ) var_dump($execute); array (size=1) 'nb' => int 20
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''20'' at line 1

Je comprend pas pourquoi il me met des " autour du 20.
Surtout si le var_dump retourne bien que c'est un int.
J'ai tester avec intval sur la variable mais c'est pareil.

En faisant ça, ça fonctionne mais je veux avoir un tableau classique moi :/
$req->bindValue('nb', $_POST['nb'], PDO::PARAM_INT);

Re: PDO - execute avec nombre de critères variables.

Posté : 05 juin 2014, 21:06
par xTG
Il est possible que de base tout paramètre soit traité comme étant une chaîne de caractère.
Or avec PDO il rajoute automatiquement les quotes.
Sauf que MySQL n'accepte pas de chaînes de caractères dans le LIMIT.

Tu peux par contre tout à fait monter une boucle pour traiter des bind et forcer le type int pour la clé nb.
Pour inspiration : http://fr2.php.net/manual/fr/pdostateme ... php#104939