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 :

impossible de récupérer les valeurs d'une table avec une requête préparée [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    profession médicale
    Inscrit en
    Décembre 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : profession médicale
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2005
    Messages : 25
    Points : 21
    Points
    21
    Par défaut impossible de récupérer les valeurs d'une table avec une requête préparée
    Bonjour,
    je cherche à lister les valeurs d'une table "news" contenant la date, le titre, un texte

    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
    <?php
    require_once ('code/connexion.php');
     
     
     
     
    $sql="SELECT date, titre, texte FROM news";
    $resultat= mysqli_prepare($mysqli,$sql);
    $ok= mysqli_stmt_bind_param($resultat,'sss',$date,$titre,$texte);
    $ok = mysqli_stmt_execute($resultat);
    if ($ok==false)
    {
    	echo"echec de la requête";
    }
    else
    {
    	$ok = mysqli_stmt_bind_result($resultat, $date,$titre,$texte);
    	while(mysqli_stmt_fetch($resultat));
     
    { echo ".$date.", "<br/>",".$titre.","<br/>",".$texte.";
    }
    }
    ?>
    j'ai toujours le message d'erreur suivant:
    WARNING:mysqli_stmt_bind_param():Number of variables doesn't match number of parameter in prepared statement
    j'ai pourtant le même nombre de variables et de paramètres
    merci de votre aide,
    cordialement,

  2. #2
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu confonds mysqli_stmt_bind_result() et mysqli_stmt_bind_param().
    Dans ta requête il n'y a pas de paramètres, donc pas besoin de bind_param.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    profession médicale
    Inscrit en
    Décembre 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : profession médicale
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2005
    Messages : 25
    Points : 21
    Points
    21
    Par défaut oups... mais quand même
    c'est la seconde requête préparée que je fais...
    alors ce n'est pas parfait
    Merci pour ton aide, cette fois j'ai un affichage... mais uniquement de la première ligne
    pourtant je crois que mon while est correctement codé
    peux tu jeter s'il te plait un coup d'oeil ?
    merci d'avance

    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
    <?php
    $sql="SELECT date, titre, texte FROM news";
    $resultat= mysqli_prepare($mysqli,$sql);
     
    $ok = mysqli_stmt_execute($resultat);
    if ($ok==false)
    {
    	echo"echec de la requête";
    }
    else
    {
    	$ok = mysqli_stmt_bind_result($resultat, $date,$titre,$texte);
    	while(mysqli_stmt_fetch($resultat));
     
    { echo ".$date.", "<br/>",".$titre.","<br/>",".$texte.";
    }
    mysqli_stmt_close($resultat);
    }
    ?>
    excuse moi par avance si j'ai fait une "grosse bourde", je débute

    autre question: dans une requête de ce type y a t-il un réel intérêt à faire une requête préparée
    en vue de prevenir une injection SQL puisqu'il s'agit simplement d'une lecture de la table ?

    merci encore pour ton aide,
    cordialement,

  4. #4
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu devrais simplement reprendre les exemples de la doc :
    http://php.net/manual/fr/mysqli-stmt.bind-result.php
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    profession médicale
    Inscrit en
    Décembre 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : profession médicale
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2005
    Messages : 25
    Points : 21
    Points
    21
    Par défaut j'ai pris l'exemple de la documentation...
    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
    <?php
    if ($stmt = mysqli_prepare($mysqli, "SELECT date, titre,texte FROM news ")) {
        mysqli_stmt_execute($stmt);
    /* Insertion de la variable */
        mysqli_stmt_bind_result($stmt, $date, $titre,$texte);
     
     
        /* Récupération des valeurs */
        while (mysqli_stmt_fetch($stmt))
    	 {
            printf("%s %s\n", $date,"<br/>",$titre,"<br/>", $texte,"<br/>");
        }
     
        /* Fermeture du traitement */
        mysqli_stmt_close($stmt);
    }
    ?>
    mais ça ne fonctionne pas, je ne récupère que les dates
    merci en attendant de m'aider, ce n'est pas si fréquent que quelqu'un prenne sur son temps pour aider un emm... de débutant

  6. #6
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Ca serait comme ça avec printf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%s<br/>%s<br/>%s<br/>", $date,$titre,$texte);
    Mais tu peux utiliser un somple echo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while (mysqli_stmt_fetch($stmt))
    	 {
            echo $date,"<br/>",$titre,"<br/>", $texte,"<br/>";
        }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre à l'essai
    Homme Profil pro
    profession médicale
    Inscrit en
    Décembre 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : profession médicale
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2005
    Messages : 25
    Points : 21
    Points
    21
    Par défaut Un immense merci
    une fois de plus, tu m'as sauvé
    merci,
    je clôture le post

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

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. Réponses: 1
    Dernier message: 19/10/2011, 12h13
  3. Réponses: 1
    Dernier message: 14/08/2011, 04h24
  4. Réponses: 3
    Dernier message: 13/01/2009, 16h55
  5. Copier les enregistrements d'une table vers une table d'une autre DB
    Par karinette21 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/11/2008, 21h50

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