Erreur de syntax dans requête mysql

Résolu
Bonjour,

J'ai une erreur de syntax que je n'arrive pas à résoudre.

Cela m'affiche l'erreur suivante :


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 'WHERE membre_tc="Dupont Louis"' at line 1



Je ne trouve pas l'erreur et cela est embétant car sa me bloque pour continuer.

Est-ce que vous pouvez voir si vous la voyez vous svp ?

Merci d'avance.

Voici la requête en question :

$requet="SELECT * FROM membres WHERE membre_fonction = 'Consultant' ORDER BY membre_nom, membre_prenom ASC"; 
if (isset($tc1)&&($tc1 != "")) 
	{ 
		$requet .= " WHERE membre_tc=\"$tc1\""; 
	}

$sql = mysql_query($requet) or die(mysql_error()); 

$total = mysql_num_rows($sql);

4 réponses

  1. Si tu fais ça, tu auras deux clauses "WHERE"...
    Essaies plutôt :

    $requet="SELECT * FROM membres WHERE membre_fonction = 'Consultant' ORDER BY membre_nom, membre_prenom ASC";
    if (isset($tc1)&&($tc1 != ""))
    {
    $requet .= " AND membre_tc=\"$tc1\"";
    }

    $sql = mysql_query($requet) or die(mysql_error());

    $total = mysql_num_rows($sql);
    1. Modérateur
      Bonjour,

      1 - Tu utilises l'ancienne extension MYSQL. Je t'invite fortement à passer à MYSQLI ou la PDO.
      Voir ceci :

      2 - Fais donc un ECHO de ta requête

      echo "La requete est :" .$requet;
      $sql = mysql_query($requet) or die(mysql_error()); 
      


      Tu devrais rapidement voir l'erreur..... ( comme le fait de vouloir mettre deux WHERE dans une même requête par exemple .....)

      PS : Quand tu as un souci de requête... toujours en faire un ECHO ... puis la tester DIRECTEMENT dans la BDD. cela t'affiche les erreurs concernées.

      PS: Qu'en est-il de ta question précédente : https://forums.commentcamarche.net/forum/affich-33285070-php-formulaire-calcul-de-conge
      1. Maintenant que j'ai fais cette modification sa m'affiche l'erreur suivante :


        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 'AND membre_tc="Dupont Louis"' at line 1


        Et pour mon autre question c'est pas encore résolu.

        Merci.
        1. Modérateur
          Essayes ça :

          $strAnd = !empty($tc1) ?  " AND membre_tc='$tc1' " : ''; 
          $requet="SELECT * FROM membres 
                            WHERE membre_fonction = 'Consultant' 
                               $strAnd
                             ORDER BY membre_nom, membre_prenom ASC"; 
          
          $sql = mysql_query($requet) or die(mysql_error()); 
          $total = mysql_num_rows($sql);
          
          


          nb: !empty équivaut à ( ISSET + non vide )
          1. Merci c'est résolu.

            Un grand merci à vous tous.