Rechercher : dans
Par :

Problème requête SQL/php

Dernière réponse le 17 oct 2008 à 14:29:23 JBB92, le 16 oct 2008 à 14:02:01 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Problème requête SQL/php » dans :
SQL - éviter les doublons dans un SELECT VoirProblème Comment éviter les doublons dans les résultats d'une requête SQL ? Solution Il suffit d'utiliser la clause DISTINCT entre SELECT et les champs. Exemple : SELECT distinct id,nom,prenom FROM matable Plus d'informations ...

1

Alain_42, le 16 oct 2008 à 14:22:32

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());
}

Répondre à Alain_42

2

JBB92, le 16 oct 2008 à 14:55:44

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

Répondre à JBB92

3

Alain_42, le 16 oct 2008 à 16:34:46

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

Répondre à Alain_42

4

JBB92, le 17 oct 2008 à 13:40:46

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

Répondre à JBB92

5

giheller, le 17 oct 2008 à 14:14:08

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 JL,  m'enfin c'est juste mon avis @+

Répondre à giheller

6

 JBB92, le 17 oct 2008 à 14:29:23

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

Répondre à JBB92
Collection CommentÇaMarche.net