Problème requête SQL/php

Bonjour,

Je dois reconnaître que je cale là. Je suis en train de réaliser un petit site pour un établissement mais voilà l'entrée des informations depuis un formulaire vers une base SQL me répond :

Erreur SQL !
Query was empty


if ((isset($_POST['A']) && !empty($_POST['A'])))
{
$sq1 = 'UPDATE prf_comp SET situation="'.mysql_escape_string($_POST['situation']).'", precision="'.mysql_escape_string($_POST['precision']).'", cprimaire="'.mysql_escape_string($_POST['cprimaire']).'", ccollege="'.mysql_escape_string($_POST['ccollege']).'", clycee="'.mysql_escape_string($_POST['clycee']).'", csuperieur="'.mysql_escape_string($_POST['csuperieur']).'", mf="'.mysql_escape_string($_POST['mf']).'", A="'.mysql_escape_string($_POST['A']).'", rmail="'.mysql_escape_string($_POST['rmail']).'" WHERE id_profco="'.$id.'" ';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
//matiere 1
if (isset($_POST["mp1"]))
{
$sq2 = 'UPDATE prf_comp SET mp1="'.mysql_escape_string($_POST['matiere1']).'" WHERE id_profco="'. $id .'" ';
mysql_query($sq2) or die('Erreur SQL !'.$sq2.'<br />'.mysql_error());
}


Vous voyez ce qui disfonctionne ?
Configuration: Windows XP
Firefox 3.0.3

4 réponses

  1. Salut,

    je t'ai un peu modifié en remplaçant les ' par des "

    et vu une erreur tu avait $sq1 au lieu de $sql (un au lieu de l)

    if ((isset($_POST['A']) && !empty($_POST['A'])))
    {
    $sql = "UPDATE prf_comp SET situation='".mysql_escape_string($_POST['situation'])."', precision='".mysql_escape_string($_POST['precision'])."', cprimaire='".mysql_escape_string($_POST['cprimaire'])."', ccollege='".mysql_escape_string($_POST['ccollege'])."', clycee='".mysql_escape_string($_POST['clycee'])."', csuperieur='".mysql_escape_string($_POST['csuperieur'])."', mf='".mysql_escape_string($_POST['mf'])."', A='".mysql_escape_string($_POST['A'])."', rmail='".mysql_escape_string($_POST['rmail'])."' WHERE id_profco='".$id."'";
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
    //matiere 1
    if (isset($_POST["mp1"]))
    {
    $sq2 = "UPDATE prf_comp SET mp1='".mysql_escape_string($_POST['matiere1'])."' WHERE id_profco='".$id."'";
    mysql_query($sq2) or die('Erreur SQL !'.$sq2.'<br />'.mysql_error());
    }
    1. Bonjour,

      Merci Alain_42, j'ai en effet modifié la partie. Je viens de tester uniquement la première requête, et déjà elle disfonctionne. La voici :

      connexion();
      if( isset($_POST['Submit']) )	
      {
      if ((isset($_POST['A']) && !empty($_POST['A'])))
      {
      $sql = 'UPDATE prf_comp SET situation="'.mysql_escape_string($_POST['situation']).'", precision="'.mysql_escape_string($_POST['precision']).'", cprimaire="'.mysql_escape_string($_POST['cprimaire']).'", ccollege="'.mysql_escape_string($_POST['ccollege']).'", clycee="'.mysql_escape_string($_POST['clycee']).'", csuperieur="'.mysql_escape_string($_POST['csuperieur']).'", matiereprof="'.mysql_escape_string($_POST['mmatieref']).'", A="'.mysql_escape_string($_POST['A']).'", rmail="'.mysql_escape_string($_POST['rmail']).'" WHERE id_profco="'.$id.'" ';
      mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
      
      
      } else { $erreur = ' Erreur ! Vous devez remplir tous les champs !'; }
      mysql_close();
      }


      Le message d'erreur est le suivant :

      Erreur SQL !UPDATE prf_comp SET situation="test", precision="123", cprimaire="cprimaire", ccollege="ccollege", clycee="", csuperieur="", matiereprof="", A="test", rmail="oui" WHERE id_profco="1"
      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 'precision="123", cprimaire="cprimaire", ccollege="ccollege", clycee="", csuperie' at line 1
      1. es tu sur que les noms de tous tes champs correspondent bien à ta requette

        et moi d'habitude je mets plutot
        $sql="UPDATE prf_comp SET situation='".mysql_escape_string($_POST['situation'])."', etc..


        avec des " au debut et fin de chaine et des ' pour encadrer les valeurs à rentrer

        essayes
    2. Bonjour,

      Je viens de revérifier tous les champs et rien ne change, j'ai aussi refait ma boucle pour être certain de ne pas y faire erreur. J'avoue ne pas comprendre là.

      Voici ma requête :
      if( isset($_POST['Submit']) )	
      {
      if ((isset($_POST['diplome']) && !empty($_POST['diplome'])))
      {
      $r1 = 'UPDATE prf_comp SET situation="'.mysql_escape_string($_POST['situation']).'", precision="'.mysql_escape_string($_POST['precision']).'", cprimaire="'.mysql_escape_string($_POST['cprimaire']).'", ccollege="'.mysql_escape_string($_POST['ccollege']).'", clycee="'.mysql_escape_string($_POST['clycee']).'", csuperieur="'.mysql_escape_string($_POST['csuperieur']).'", matiereprof="'.mysql_escape_string($_POST['matiereprof']).'", diplome="'.mysql_escape_string($_POST['diplome']).'", rmail="'.mysql_escape_string($_POST['rmail']).'", WHERE id_profco="'.$id.'" ';
      mysql_query($r1) or die('Erreur SQL !'.$r1.'<br />'.mysql_error());
      
      
      } else { $erreur = ' Erreur ! Vous devez remplir tous les champs !'; }
      mysql_close();
      }


      Voici l'erreur qu'il m'indique :

      Erreur SQL !UPDATE prf_comp SET situation="Enseignant", precision="", cprimaire="", ccollege="", clycee="clycee", csuperieur="", matiereprof="test", diplome="test", rmail="oui", WHERE id_profco="1"
      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 'precision="", cprimaire="", ccollege="", clycee="clycee", csuperieur="", matiere' at line 1
      1. bonjour,

        $r1 = 'UPDATE prf_comp SET situation="'.mysql_escape_string($_POST['situation']).'", precision="'.mysql_escape_string($_POST['precision']).'", cprimaire="'.mysql_escape_string($_POST['cprimaire']).'", ccollege="'.mysql_escape_string($_POST['ccollege']).'", clycee="'.mysql_escape_string($_POST['clycee']).'", csuperieur="'.mysql_escape_string($_POST['csuperieur']).'", matiereprof="'.mysql_escape_string($_POST['matiereprof']).'", diplome="'.mysql_escape_string($_POST['diplome']).'", rmail="'.mysql_escape_string($_POST['rmail']).'", WHERE id_profco="'.$id.'" ';

        il faudrait inverser les " et les ' car il y a des ' dans les $_POST
        ainsi :

        $r1 = "update prf_comp set situation='".mysql_escape_string($_POST['situation'])."' ...
        double simple puis double double puis simple etc
        1. Bonjour,

          Donc voilà j'ai enfin trouvé le problème. C'est tout simplement le fait que le terme : PRECISION est un terme réservé MySQL. C'est toujours bon à savoir.

          Merci à tous