Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/09/2006, 13h44   #1
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
Par défaut [PDO] Ne supporte pas le LIMIT ?

re-bonjour à tous.
je cherche à extraire des données de ma base en spécifiant les bornes pour faire un affichage page par page :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function execute_SQL($strSQL, $tabl_bind = 0) {
	global $db;
 
	$statement = $db->prepare($strSQL);
	if ($tabl_bind != 0) {
		foreach($tabl_bind as $cle => $parametre) {
			$statement->bindValue($cle, $parametre);
		}
	}
	$statement->execute();
	print_r($statement->errorInfo());
 
	return $statement;
}
 
$sql = 'SELECT * FROM TBL_RECHERCHE WHERE PART_NUMBER LIKE :val_1 OR TYPE LIKE :val_2 OR DESCRIPTION LIKE :val_3 OR FABRICANT LIKE :val_4 LIMIT :Lim_basse, :Lim_haute';
 
$statement = execute_SQL($sql, array(	':val_1' => '%'.$valeur.'%',
		:val_2' => '%'.$valeur.'%',
		':val_3' => '%'.$valeur.'%',
		':val_4' => '%'.$valeur.'%',
		':Lim_basse' => $limite_basse,
		':Lim_haute' => $limite_haute,
		));
Mail il me renvoie le code d'erreur suivant :

Citation:
Array ( [0] => 42000 [1] => 1064 [2] => 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 ''30', '45'' at line 1 )
ma requête marche très bien sans la clause LIMIT, et mes deux valeurs sont bonnes.

Ais-je fait une erreur, ou est-ce que c'est PDO qui fait des siennes ?
Voyez-vous une solution de contournement ?

Merci d'avance
__________________
Globalement inoffensif
Merci de respecter les règles du forum.
Aucune question technique par MP !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 14h10   #2
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 24
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 24
Points : 16
Points : 16
Non PDO ne supporte pas le LIMIT et ne te fais pas trop d'espoir : j'avais posté un rapport de bug sur ce sujet et je me suis fait rabrouer, comme très souvent quand on essaye de dire quelque chose sur bugs.php.net...

Dommage de faire une extension aussi indispensable mais d'envoyer promener tout ceux qui exposent un problème, l'équipe PDO a le bogus facile et Wez a même été assez déplaisant sur un autre rapport de bug...

Je n'ai pas spécialement cherché à contourner, parce que je pouvais me satisfaire d'un LIMIT en dur dans la requête, mais évidemment pour faire un pager ça rend les choses beaucoup plus délicates, donc désolé pas d'idée.
BoneBreaker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 14h14   #3
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
Merci de ta réponse

J'ai essayé de passer toute ma clause LIMIT dans un paramètre, et de le binder ensuite, mais certes ça ne bloque plus, mais il me renvoir l'intégralité de mes enregistrements sans tenir en compte le limit
__________________
Globalement inoffensif
Merci de respecter les règles du forum.
Aucune question technique par MP !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 14h25   #4
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
Bon, bah au final je passe comme un sauvage mes variables dans ma chaine SQL, autant pour l'utilité de PDO et la propreté du code ...

Code :
$sql = "SELECT * FROM TBL_RECHERCHE WHERE PART_NUMBER LIKE :val_1 OR TYPE LIKE :val_2 OR DESCRIPTION LIKE :val_3 OR FABRICANT LIKE :val_4 LIMIT $limite_basse, $pas_affiche";
__________________
Globalement inoffensif
Merci de respecter les règles du forum.
Aucune question technique par MP !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 15h56   #5
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 24
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 24
Points : 16
Points : 16
Oui dommage pas de solution propre, et comme mes requêtes SQL ne sont pas dans un fichier .php je n'ai pas pu les passer en variable comme tu as fait
BoneBreaker est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h28.


 
 
 
 
Partenaires

Hébergement Web