Affichage des resultats d'une requete

Bonjour,

je suis en train de programmer en php et je ne comprends pas pourquoi l'une de mes requetes ne fonctionne pas

<?php
$reponse = $bdd->query('SELECT Matricule, Nom, Prenom, Affectation, Categorie, Sorti FROM matricules ORDER BY Nom ASC');
while ($donnees = $reponse->fetch())
{
?>
<tr>
<td> <?php echo $donnees['Matricule'];?> </td>
<td> <?php echo $donnees['Nom']; ?> </td>
<td> <?php echo $donnees['Prenom'];?> </td>
<td> <?php echo $donnees['Affectation'];?> </td>
<?php
$tmp = $donnees['Categorie'];
var_dump($tmp); echo "<hr>";
$reponse2 = $bdd->query('SELECT Categorie FROM categorie WHERE Code_Categ = $tmp');/*Je ne comprends pas pourquoi est ce que ça ne fonctionne pas*/
?>
<td> <?php echo $reponse2;?> </td>

la deuxieme requete ne me renvoit rien la case reste vide.

Si quelqu'un peut m'aider ce serait vraiment bien.

6 réponses

  1. Salut, essaye de faire un
    var_dump($reponse2);
    pour voir si çà te renvoie qqch déjà.

    Çà peut venir du faire que ta restriction (sur ta seconde requête) soit
    WHERE Code_Categ = $tmp

    et non sous cette forme là, si ton élément $tmp est un élément de type chaîne
    WHERE Code_Categ = '$tmp'
    0
    1. j'ai fait un var_dump($reponse2); et ça me renvoie un booléen tout le temps false; et $tmp c'est un int c'est pour ça que j'ai pas fait de '$tmp'
      0
      1. Ok, as-tu essayé d'afficher ton $tmp avec un
        var_dump($tmp);
        pour vérifier que c'est bien un INT, et de tester directement ta requête n°2 avec la valeur de ton tmp si çà te renvoie bien un résultat? ou une erreur.

        Tu utilises une Debian pour çà? Phpmyadmin, Wamp?
        0
    2. j'ai essayé tout ça;
      - c'est bien un INT.
      - ça me renvoie toujours un booléen meme quand je met une valeur.
      - j'ai même essayé la requête dans phpmyadmin elle fonctionne bien.
      - j'utilises Wamp.
      0
      1. Ok, tu peux essayer çà pour voir?
        $row = mysql_fetch_array($reponse2);
        var_dump($row);
        0
    3. Ca ne fonctionne pas non plus.
      Je pense que je ne peux pas utiliser cette syntaxe parce que j'ai utilisé une connexion PDO pour me connecter à ma base
      0
      1. "ça me renvoie un booléen tout le temps false." $response2 ne correspond pas à la valeur de la catégorie mais au résultat de la méthode query. Ici query renvoie false parce que la méthode échoue

        La méthode query échoue parce que la requête sql est mal écrite : la variable php ne doit pas être dans la chaîne sql

        Autant utiliser la méthode prepare de PDO. Avec bindvalue, c'est encore mieux. Il y a un exemple ici https://www.php.net/manual/fr/pdostatement.bindvalue.php

        Au passage, autant vérifier que $tmp est supérieur à 0 (je suppose qu'aucune catégorie à un identifiant nul) avant de lancer une requête.
        0
        1. Désolée de ne repondre que maintenant. Je vais faire ça se matin même.
          0