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 :

[Mysqli] Afficher une requête préparée ? [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é
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 62
    Par défaut [Mysqli] Afficher une requête préparée ?
    Bonjour,

    J'ai actuellement une requête préparée de recherche par titre et je l'améliore pour qu'elle puisse prendre plusieurs mots à la fois. Au final PHP me génère une variable qui contient mon like en string genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND a.titre LIKE '%mot1%mot2%motx%'
    Ensuite j'envoie la variable en question à ma fonction SQL qui la prend en paramètre. Dans ma requête je bind ma variable là où est censé être le LIKE...

    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
    $stmt = mysqli_prepare($conn, "
     
    SELECT a.id, a.titre, a.texte, r.ss_titre, r.lieu_id, d.date1, d.date2, a.rubrique
    FROM ARTICLES a
    LEFT JOIN RENSEIGNEMENTS r ON a.id = r.article_id
    LEFT JOIN DATES d ON r.date_id = d.id
    WHERE a.edition IN ('NANCY', 'NANCY-METZ', 'NANCY-METZ-STRASB', 'NANCY-METZ-STR-DIJON', 'TTES EDITIONS')
    AND ( 
       d.date1 = ( SELECT MIN( d1.date1 ) 			
       FROM ARTICLES a1
       LEFT JOIN RENSEIGNEMENTS r1 ON a1.id = r1.article_id
       LEFT JOIN DATES d1 ON r1.date_id = d1.id
       WHERE a1.titre = a.titre )
      OR r.article_id IS NULL
       )
       ?
       GROUP BY a.titre
       ORDER BY COALESCE(d.date1, '2050-12-31')
    ");
     
    mysqli_stmt_bind_param($stmt, "s", $like);
    Le problème c'est que la requête foire, et j'ai du mal à trouver d'où ça vient sans afficher la requête envoyée. Donc ma question est : Est-ce que c'est possible ou "I'm doing it wrong" ?

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut


    Dans une requête préparée tu ne peux pas insérer à la volée de code SQL. Tout ce que tu peux insérer c'est une valeur. Exemples :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $stmt = mysqli_prepare("SELECT * FROM table ?");
    mysqli_stmt_bind_param($stmt, "s", "WHERE col = 'valeur'");// interdit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $stmt = mysqli_prepare("SELECT * FROM table WHERE col = ?");// remarque : je n'ai pas mis de guillemets ou de quotes, le bind_param fait ça tout seul
    mysqli_stmt_bind_param($stmt, "s", 'valeur');// OK

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 62
    Par défaut
    Ah d'accord. Du coup il faut que je passe par une requête simple ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Non non tu dois juste faire rentrer tout ce qui est du code SQL dans ta requête préparée, et réduire ta variable $like à '%mot1%mot2%motx%'

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 62
    Par défaut
    Merci ça marche

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 15/09/2008, 10h25
  2. [MySQL] Afficher une requête
    Par jiojioforever dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 26/03/2007, 14h08
  3. Afficher une requéte dans un contenu HTML
    Par JiB@ dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 09/03/2007, 13h55
  4. [ODBC] Afficher une requête croisée dynamique dans une page PHP
    Par resterzen dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/08/2006, 16h24
  5. [MySQL] Afficher une requête dans un champ texte
    Par SnickeursMan dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/11/2005, 10h07

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