Problème requête SQL/php

Fermé
JBB92 Messages postés 29 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 22 juin 2010 - 16 oct. 2008 à 14:02
JBB92 Messages postés 29 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 22 juin 2010 - 17 oct. 2008 à 14:29
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 ?
A voir également:

4 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
16 oct. 2008 à 14:22
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
JBB92 Messages postés 29 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 22 juin 2010
16 oct. 2008 à 14:55
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
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
16 oct. 2008 à 16:34
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
-1
JBB92 Messages postés 29 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 22 juin 2010
17 oct. 2008 à 13:40
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
Utilisateur anonyme
17 oct. 2008 à 14:14
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
JBB92 Messages postés 29 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 22 juin 2010
17 oct. 2008 à 14:29
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
-1