Erreur PHP/MySQL

Résolu
Bonjour,

Je suis en train de faire une page qui affiche les amis de la personne connectée et je bloque... Chaque fois, ca m'affiche: Erreur SELECT friend FROM friends WHERE id='SELECT id FROM users WHERE email='quuent1@hotmail.com'" 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 'quuent1@hotmail.com'"' at line 1

Voila mon code (apparement c'est $requete2 qui pose problème:

	  $requete = "SELECT id FROM users WHERE email='".$_SESSION['email']."'";
	  $requete2= "SELECT friend FROM friends WHERE id='".$requete.'"';	
 	  
$resultat = mysql_query($requete) or die ('Erreur '.$requete.' '.mysql_error());
$resultat2 = mysql_query($requete2) or die ('Erreur '.$requete2.' '.mysql_error());
 $data = mysql_fetch_array($resultat); 
 
mysql_close (); 

Merci et bonne soirée

14 réponses

  1. Modérateur
    Bonsoir,

    Tu as inversé les guillemets et les apostrophes :

    $requete2= "SELECT friend FROM friends WHERE id='".$requete.'"';

    Il faudrait plutôt :
    $requete2= "SELECT friend FROM friends WHERE id='".$requete."'";

    Au lieu de apostrophe/guillemet/apostrophe à la fin de la ligne, il faut guillemet/apostrophe/guillemet.
    1. Toujours la même erreur: Erreur SELECT friend FROM friends WHERE id='SELECT id FROM users WHERE email='XXXXX@hotmail.com'' 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 'XXXXX@hotmail.com''' at line 1

      (Adresses mail supprimées)
      1. Modérateur
        Ah mais l'ordre d'exécution des requêtes n'est pas bon !
        $requete contient le texte de ta requête et non pas l'id que tu recherches dans la base.

        Il faut :
        $requete = "SELECT id FROM users WHERE email='".$_SESSION['email']."'";   
        $resultat = mysql_query($requete) or die ('Erreur '.$requete.' '.mysql_error());   
        $requete2= "SELECT friend FROM friends WHERE id='".$resultat."'";    
               
        
        $resultat2 = mysql_query($requete2) or die ('Erreur '.$requete2.' '.mysql_error());   
        $data = mysql_fetch_array($resultat2);
            
        mysql_close ();  


        Tu veux un Nyon ?
        1. ah merci beaucoup! Tu sais me dire juste la signification de ca?

          echo 'Le numéro est : '.$data['friend'];  
          


          C'est à l'endroit de friend, je ne sais pas se que je dois mettre :/
          1. Merci :) Nouveau problème, rien ne s'affiche :/

            echo 'Le numéro est : '.$data['friend'];

            M'affiche simplement "Le numéro est:" mais il n'y en a aucun après :/
            1. Modérateur
              $data = mysql_fetch_array($resultat2);
              $resultat2 et non pas $resultat.
              1. bon j'y vais donc je ne répondrais plus avant demain, bonne soirée et merci
                1. Modérateur
                  Tu veux afficher quoi au juste l'id ?
                  Si oui, il faut juste écrire :
                  echo 'Le numéro est : ' . $resultat;
                  1. Un dernier coup de main possible? Ma boucle ne fonctionne pas :/
                    while ($ligne = $resultat2) 
                        {
                        echo '<b>'.$ligne['friend'];
                        } 
                    
                    1. Modérateur
                      Je te conseille d'apprendre la signification de ton code :
                      Tu confonds les variables, les tableaux, les indices de tableau, ...
                      https://www.php.net/manual/fr/function.mysql-fetch-assoc.php

                      Exemple avec la fonction "mysql_fetch_assoc"
                      while ($row = mysql_fetch_assoc($result)) { 
                         echo $row["userid"]; 
                         echo $row["fullname"]; 
                         echo $row["userstatus"]; 
                      }


                      Dans ton cas, "resultat2" est censé être un indice du tableau (un champ de ta base de données, ce qui n'est pas le cas).
                  2. Merci, désolé je débute en PHP/SQL :/
                    1. Modérateur
                      Pas de souci.
                      Mieux vaut consolider les bases et apprendre plutôt que de recopier du code sans comprendre.
                      Sans ça, tu vas réussir finalement à coder mais ton code PHP ne sera pas "propre" et contiendra éventuellement des failles de sécurité.