IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[PDO] Ne supporte pas le LIMIT ?


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

    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 !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut
    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.

  3. #3
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Par défaut
    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 !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  4. #4
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $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 !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/07/2007, 11h48
  2. Réponses: 2
    Dernier message: 19/06/2007, 11h06
  3. Dossir Extras ne supporte pas les scripts?
    Par Donaldo dans le forum 4D
    Réponses: 2
    Dernier message: 21/03/2007, 17h25
  4. Réponses: 2
    Dernier message: 25/02/2007, 23h56
  5. [IDE][VS.NET 2003] IIS ne supporte pas le framework 1.1 ?
    Par Monstros Velu dans le forum Visual Studio
    Réponses: 2
    Dernier message: 27/03/2006, 15h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo