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

PHP & Base de données Discussion :

Requête SELECT avec un LIMIT à 2 variables [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 112
    Par défaut Requête SELECT avec un LIMIT à 2 variables
    Bonjour à tous,

    j'utilise PDO pour me connecter sur ma base.
    Je souhaite faire une requête de la sorte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $db->prepare("SELECT id, english, french FROM english LIMIT ?, ?");
    Avec évidement l'envoi de 2 paramètres dans la fonction qui appelle cette requête . Seulement, cela ne fonctionne pas, ma valeur de retour est un tableau vide .
    Donc j'aimerais savoir si c'est possible d'avoir des inconnues concernant un LIMIT dans une requête SQL.
    Et si non, comment contourner le problème ?

    Merci d'avance.

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    Je ne connais pas PDO, mais une chose est sûre, c'est que la requête préparée à laquelle on passe les 2 valeurs du LIMIT fonctionne parfaitement sous MySQL.
    Le problème est donc plutôt côté PHP...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si tu as en retour un tableau vide, c'est que ta requete a bien été executée.
    Je verifierais plutot la valeur que je transmet a l'execution.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 112
    Par défaut
    En effet la clause LIMIT fonctionne très bien sous MySQL, je problème arrive dés que je met une inconnue. Voici mon code simplifié à une variable pour un peu plus de détails :
    Ma classe pour gérer ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class englishTable {
    	private $selectAllWithLimit;
     
    	public function __construct($db) {
    		$this->selectAllWithLimit = $db->prepare('SELECT id, english, french FROM english LIMIT 0, ?');
     
    	public function selectAllWithLimit($start) {
                    var_dump($start);
    		$this->selectAllWithLimit->execute(array($start));
    		var_dump($this->selectAllWithLimit->fetchAll());
    		return $this->selectAllWithLimit->fetchAll();
    	}
    }
    Dans mon code principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $start = 3;
    $words = $englishTable->selectAllWithLimit($start);
    Les var_dump indiquent respectivement int(3) (donc la valeur de $start que j'envoie) et array(0) { }!
    J'ai essayé dans tous les sens , l'erreur doit être bête (comme souvent ).
    Ou peut être l'utilisation de LIMIT est restreinte dans certains cas?


  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Entre nous, je voudrais valider le fonctionnement de ca, je ferrais une page avec une connexion et une requete.

    Bref, d'apres mes recherches c'est un probleme qui date depuis au moins 2005 et qui n'est toujours pas résolu.

    Tu es obligé d'utiliser bindvalue.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sth->bindValue(':limit', $start, PDO::PARAM_INT );
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 112
    Par défaut
    Nan mais le code que j'ai montré n'est que la partie qui nous concerne !
    $sth->bindValue(':limit', $start, PDO:ARAM_INT );
    Merci du tuyau, est ce que tu pourrais me donner plus d'info stp ??
    Que fait bindValue?
    Que reçoit $sth par rapport aux paramètres d'entrés?

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/08/2013, 15h38
  2. Requête select avec variable
    Par katwes dans le forum Débuter
    Réponses: 10
    Dernier message: 29/09/2011, 15h16
  3. Requête SELECT avec deux champs dans une colonne ??
    Par fredhali2000 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 08/06/2006, 10h41
  4. Requête selection avec une variable de date
    Par kahmsin dans le forum Access
    Réponses: 7
    Dernier message: 20/11/2005, 19h38
  5. [Débutant] Requête SELECT avec max et sous-requête
    Par joefou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/07/2005, 14h28

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