Error in your SQL syntax

Signaler
Messages postés
119
Date d'inscription
vendredi 27 mars 2015
Statut
Membre
Dernière intervention
2 avril 2019
-
Messages postés
34699
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2022
-
Bonjour,
je travail sur mon Projet
J'ai crée une base de donnée en wampserver et je'ai une table employer j'ai inséré des données mais j'ai rencontré une erreur qui m'a fatigué
le message d'erreur est la :
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 '','25')' at line 1
et le code est la

<?php
class ajouteremp{
private $Id_emp;
private $Id_dep;
private $matricule;
private $nom_prenom;
private $adresse;
private $date_recrutement;
private $service;
private $date_naissance;
private $fonction;
private $direction;
private $division;
private $sexe;
private $carte_Identite;
private $caisse;
private $grade;
private $age;


public function getId_emp(){
return $this->Id_emp;
}
public function setId_emp($Id_emp){
$this->Id_emp=$Id_emp;
}
public function getId_dep(){
return $this->Id_dep;
}
public function setId_dep($Id_dep){
$this->Id_dep=$Id_dep;
}
public function getMatricule(){
return $this->matricule;
}
public function setMatricule($matricule){
$this->matricule=$matricule;
}
public function getNom_prenom(){
return $this->nom_prenom;
}
public function setNom_prenom($nom_prenom){
$this->nom_prenom=$nom_prenom;
}

public function getAdresse(){
return $this->adresse;
}
public function setAdresse($adresse){
$this->adresse=$adresse;
}
public function getDate_recrutement(){
return $this->date_recrutement;
}
public function setDate_recrutement($date_recrutement){
$this->date_recrutement=$date_recrutement;
}
public function getService(){
return $this->service;
}
public function setService($service){
$this->service=$service;
}
public function getDivision(){
return $this->division;
}
public function setDivision($division){
$this->division=$division;
}
public function getDate_naissance(){
return $this->date_naissance;
}
public function setDate_naissance($date_naissance){
$this->date_naissance=$date_naissance;
}
public function getFonction(){
return $this->fonction;
}
public function setFonction($fonction){
$this->fonction=$fonction;
}
public function getDirection(){
return $this->direction;
}
public function setDirection($direction){
$this->direction=$direction;
}
public function getSexe(){
return $this->sexe;
}
public function setSexe($sexe){
$this->sexe=$sexe;
}
public function getCarte_Identite(){
return $this->carte_Identite;
}
public function setCarte_Identite($carte_Identite){
$this->carte_Identite=$carte_Identite;
}
public function getCaisse(){
return $this->caisse;
}
public function setCaisse($caisse){
$this->caisse=$caisse;
}
public function getGrade(){
return $this->grade;
}
public function setGrade($grade){
$this->grade=$grade;
}
public function getAge(){
return $this->age;
}
public function setAge($age){
$this->age=$age;
}
function ajouemp($matricule,$nom_prenom,$adresse,$fonction,$direction,$service,$division,$date_naissance,$date_recrutement,$sexe,$carte_Identite,$caisse,$grade,$age){
$a=mysql_connect("localhost","root","");
$b=mysql_select_db("gestion_personnel",$a);
$req="insert into employer (matricule,nom_prenom,adresse,fonction,direction,service,division,date_naissance,date_recrutement,sexe,carte_Identite,caisse,grade,age) values('$matricule','$nom_prenom','$adresse','$fonction','$direction','$service','$division','$date_naissance','$date_recrutement','$sexe','$carte_Identite','$caisse',$grade','$age')";
mysql_query($req) or die(''.mysql_error());
}
}

?>


<?php
include('/classes/ajouteremp.php');
if(isset($_POST['ajou']) && $_POST['ajou']=="Ajouter"){
$e= new ajouteremp();
$e->setMatricule($_POST['matricule']);
$e->setNom_prenom($_POST['nom_prenom']);
$e->setAdresse($_POST['adresse']);
//$e->setFonction($_POST['fonction']);
$e->setDirection($_POST['direction']);
$e->setService($_POST['service']);
$e->setDivision($_POST['division']);
$e->setDate_naissance($_POST['date_naissance']);
$e->setDate_recrutement($_POST['date_recrutement']);
$e->setSexe($_POST['sexe']);
$e->setCarte_Identite($_POST['carte_Identite']);
$e->setCaisse($_POST['caisse']);
$e->setGrade($_POST['grade']);
$e->setAge($_POST['age']);
$e->ajouemp($e->getMatricule(),$e->getNom_prenom(),$e->getAdresse(),$e->getFonction(),$e->getDirection(),$e->getService(),$e->getDivision(),$e->getDate_naissance(),$e->getDate_recrutement(),$e->getSexe(),$e->getCarte_Identite(),$e->getCaisse(),$e->getGrade(),$e->getAge());
mysql_close();
header('location:Affiche_employe.php');
exit();

}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script type="text/javascript">
function validate(xx)
{
var len = document.forms[0].elements.length;
for(var i = 0; i < len; i++)
{
if(document.forms[0].elements[i].type=="text" &&
document.forms[0].elements[i].id.indexOf('_obli')>-1 ) {
if (document.forms[0].elements[i].value.length=='') {
document.forms[0].elements[i].style.backgroundColor='#DBDBFF';
alert('champs obligatoire');
return false;
} else {
document.forms[0].elements[i].style.backgroundColor='#FFFFFF'
}
}
}
}
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Acceuil</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta name="author" content="Moctar ould Mohamed" />
<meta name="description" content="FTM" />
<link rel="stylesheet" href="design.css" type="text/css" />
</head>
<body>

<div id="left">
<img src="logo.jpg" WIDTH='200%' HEIGHT='150'/>
</div>
<div id="haut">
<div id="right">

<img src="logo.jpg" WIDTH='200%' HEIGHT='150'/>
</div>

</div>

<div id="content"><h2><font size="+1"><u><font size="+1">Gestion des Employer</font><a href="index.php"><input type="button" value="Deconnection"></a></u></pre></h2><br><br><br>
<fieldset style="background-color:#FFF;-webkit-border-radius:.9em;-moz-border-radius:.9em;">
<legend><h3>Ajouter Employer</h3></legend>
<form action="ajouter_employe.php" method="POST">
<table bordercolor="green" width="100%">
<tr><td>Matricule</td><td><input type="text" name="matricule">
</td><td>Nom_Prenom</td><td><input type="text" name="nom_prenom"></td></tr>
<tr><td>Adresse</td><td><input type="text" name="adresse">
</td><td>Direction</td><td><input type="text" name="direction"></td></tr>
<tr><td>Service</td><td><input type="text" name="service"></td>
<tr><td>Division</td><td><input type="text" name="division"></td>
<td>Date_Naissance</td><td><input type="text" name="date_naissance"></td></tr>
<td>Date_Recrutement</td><td><input type="text" name="date_recrutement"></td></tr>
<td>Fonction</td><td><select name="Fonction" value="2"><option>Donner votre Choix</option><option value="1">Cadre</option><option value="2">Planton</option></td></tr>
</td><tr><td>Sexe</td>
<td><select name="sexe" value="2"><option>Donner votre Choix</option><option value="1">Homme</option><option value="2">Femme</option></td>
<td>Carte_Identite</td><td><input type="text" name="carte_Identite"></td></tr>
<td>Caisse</td><td><input type="text" name="caisse"></td>
<td>Grade</td><td><input type="text" name="grade"></td>
<td>Age</td><td><input type="text" name="age"></td>
<tr><td align="center">Departement</td><td>
</tr>
<?php
$a=mysql_connect("localhost","root","");
$b=mysql_select_db("gestion_personnel",$a);
$req="select * from departement";
$res=mysql_query($req);
?>
<select name="direction"><option>Selectionner votre Choix</option><?php
while($lig=mysql_fetch_array($res)){
?><option value='<?php echo $lig['nomab']; ?>'><?php echo $lig['nomab']; ?></option>

<?php
}
?>
</option></select></td></tr>
<tr><td colspan="4" align="center"><input type="submit" name="ajou" value="Ajouter"><input type="reset" value="Annulez"></td></tr>
</fieldset></form></table>
</div>
</div>
</div>
<div id="footer"></div>
</div>
</body></html>

Merci d'avance

1 réponse

Messages postés
34699
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2022
358
Bonjour,

Déjà ... pourquoi t'obstines tu à utiliser l'extension Mysql ?
Il me semble t'avoir déjà indiqué qu'elle était considérée comme obsolète...
Je t'invite à passer à la PDO et à lire ceci : http://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top

Ensuite...
Pourquoi utilises tu des SETER pour mettre tes données dans ta class..et que par la suite... tu passes les valeurs à insérer directement dans la fonction ??? ça n'a aucune utilité ...
donc : Soit tu ne mets pas tes variables via les set .. soit tu ne les passes pas en paramètre !

par exemple (sans les mettre en paramêtre..

function ajouemp(){
  $matricule = $this->matricule;
  $nom_prenom = $this->nom_prenom;
  $adresse = $this->adresse;
  $fonction = $this->fonction;
  $direction = $this->direction;
  $service = $this->service;
  $division = $this->division;
  $date_naissance = $this->date_naissance;
  $date_recrutement = $this->date_recrutement;
  $sexe = $this->sexe;
  $carte_Identite = $this->carte_Identite;
  $caisse = $this->caisse;
  $grade = $this->grade;
  $age = $this->age;



Et enfin :
Ton souci semble venir de ta requête ...
Donc modifie ton code ainsi :
$req="insert into employer 
	      (matricule
	      ,nom_prenom
	      ,adresse
	      ,fonction
	      ,direction
	      ,service
	      ,division
	      ,date_naissance
	      ,date_recrutement
	      ,sexe
	      ,carte_Identite
	      ,caisse
	      ,grade
	      ,age) 
	 values('$matricule'
	      ,'$nom_prenom'
	      ,'$adresse'
	      ,'$fonction'
	      ,'$direction'
	      ,'$service'
	      ,'$division'
	      ,'$date_naissance'
	      ,'$date_recrutement'
	      ,'$sexe'
	      ,'$carte_Identite'
	      ,'$caisse'
	      ,$grade'
	      ,'$age')";
mysql_query($req) or die('Error ! <br>'.mysql_error() . " <br><b>Requete :</b><br>".$req);


NB : Tu remarqueras que j'ai fait des retours à la ligne dans la requête... cela la rend beaucoup plus lisible et donc facile à deboguer en cas de souci !

NB2 : J'ai ajouté dans le DIE l'affichage de la requête....
En cas de soucis... tu peux donc la visualiser...... puis la tester EN DIRECT dans ta BDD...
Je t'invite à lire ceci : http://codes-sources.commentcamarche.net/faq/10778-heidisql-tester-ses-requetes-sql (réalisable aussi depuis Phpmyadmin bien entendu ! )
Bonjour

j'ai installer HeidiSQL , il m'a dit que j'ai une erreur de syntaxe et que je doit consulter version du serveur MySQL pour le droit d'utiliser la syntaxe

Les messages d'erreurs
/* Délimiteur changé en ; *//* Connexion à 127.0.0.1 par MySQL (TCP/IP), identifiant root, mot de passe: No ... */
/* Connecté. ID du Thread: 166 */
/* Characterset: utf8mb4 */
SHOW STATUS;
SHOW VARIABLES;
SHOW DATABASES;
/* Entrer dans la session "Unnamed" */
$req="insert into employer (matricule,nom_prenom,adresse,fonction,direction,service,division,date_naissance,date_recrutement,sexe,carte_Identite,caisse,grade,age) values('$matricule','$nom_prenom','$adresse','$fonction','$direction','$service','$division','$date_naissance','$date_recrutement','$sexe','$carte_Identite','$caisse',$grade','$age')";
/* Erreur SQL (1064) : 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 '$req="insert into employer (matricule,nom_prenom,adresse,fonction,direction,serv' at line 1 */
/* Affected rows: 0 Lignes trouvées: 0 Avertissements: 0 Durée pour 0 of 1 query: 0,000 sec. */
$req="insert into employer (matricule,nom_prenom,adresse,fonction,direction,service,division,date_naissance,date_recrutement,sexe,carte_Identite,caisse,grade,age) values('$matricule','$nom_prenom','$adresse','$fonction','$direction','$service','$division','$date_naissance','$date_recrutement','$sexe','$carte_Identite','$caisse',$grade','$age')";
/* Erreur SQL (1064) : 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 '$req="insert into employer (matricule,nom_prenom,adresse,fonction,direction,serv' at line 1 */
/* Affected rows: 0 Lignes trouvées: 0 Avertissements: 0 Durée pour 0 of 1 query: 0,000 sec. */
$req="insert into employer (matricule,nom_prenom,adresse,fonction,direction,service,division,date_naissance,date_recrutement,sexe,carte_Identite,caisse,grade,age) values('$matricule','$nom_prenom','$adresse','$fonction','$direction','$service','$division','$date_naissance','$date_recrutement','$sexe','$carte_Identite','$caisse',$grade','$age')";
/* Erreur SQL (1064) : 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 '$req="insert into employer (matricule,nom_prenom,adresse,fonction,direction,serv' at line 1 */
/* Affected rows: 0 Lignes trouvées: 0 Avertissements: 0 Durée pour 0 of 1 query: 0,000 sec. */
if(isset($_POST['ajou']) && $_POST['ajou']=="Ajouter"){
$e= new ajouteremp();
/* Erreur SQL (1064) : 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 'if(isset($_POST['ajou']) && $_POST['ajou']=="Ajouter"){
$e= new ajouteremp()' at line 1 */
/* Affected rows: 0 Lignes trouvées: 0 Avertissements: 0 Durée pour 0 of 17 queries: 0,000 sec. */
USE `gestion_personnel`;
SELECT `DEFAULT_COLLATION_NAME` FROM `information_schema`.`SCHEMATA` WHERE `SCHEMA_NAME`='gestion_personnel';
SHOW TABLE STATUS FROM `gestion_personnel`;
SHOW FUNCTION STATUS WHERE `Db`='gestion_personnel';
SHOW PROCEDURE STATUS WHERE `Db`='gestion_personnel';
SHOW TRIGGERS FROM `gestion_personnel`;
SHOW EVENTS FROM `gestion_personnel`;
if(isset($_POST['ajou']) && $_POST['ajou']=="Ajouter"){
$e= new ajouteremp();
/* Erreur SQL (1064) : 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 'if(isset($_POST['ajou']) && $_POST['ajou']=="Ajouter"){
$e= new ajouteremp()' at line 1 */
/* Affected rows: 0 Lignes trouvées: 0 Avertissements: 0 Durée pour 0 of 17 queries: 0,000 sec. */
function ajouemp(){
$matricule = $this->matricule;
/* Erreur SQL (1064) : 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 'function ajouemp(){
$matricule = $this->matricule' at line 1 */
/* Affected rows: 0 Lignes trouvées: 0 Avertissements: 0 Durée pour 0 of 14 queries: 0,000 sec. */
function ajouemp(){
$matricule = $this->matricule;
/* Erreur SQL (1064) : 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 'function ajouemp(){
$matricule = $this->matricule' at line 1 */
/* Affected rows: 0 Lignes trouvées: 0 Avertissements: 0 Durée pour 0 of 14 queries: 0,000 sec. */
function ajouemp(){
$matricule = $this->matricule;
/* Erreur SQL (1064) : 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 'function ajouemp(){
$matricule = $this->matricule' at line 1 */
/* Affected rows: 0 Lignes trouvées: 0 Avertissements: 0 Durée pour 0 of 14 queries: 0,000 sec. */
function ajouemp(){
$matricule = $this->matricule;
/* Erreur SQL (1064) : 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 'function ajouemp(){
$matricule = $this->matricule' at line 1 */
/* Affected rows: 0 Lignes trouvées: 0 Avertissements: 0 Durée pour 0 of 14 queries: 0,000 sec. */
$req="insert into employer
(matricule
,nom_prenom
,adresse
,fonction
,direction
,service
,division
,date_naissance
,date_recrutement
,sexe
,carte_Identite
,caisse
,grade
,age)
values('$matricule'
,'$nom_prenom'
,'$adresse'
,'$fonction'
,'$direction'
,'$service'
,'$division'
,'$date_naissance'
,'$date_recrutement'
,'$sexe'
,'$carte_Identite'
,'$caisse'
,$grade'
,'$age')";
/* Erreur SQL (1064) : 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 '$req="insert into employer
(matricule
,nom_prenom
,adre' at line 1 */
/* Affected rows: 0 Lignes trouvées: 0 Avertissements: 0 Durée pour 0 of 2 queries: 0,000 sec. */
$req="insert into employer
(matricule
,nom_prenom
,adresse
,fonction
,direction
,service
,division
,date_naissance
,date_recrutement
,sexe
,carte_Identite
,caisse
,grade
,age)
values('$matricule'
,'$nom_prenom'
,'$adresse'
,'$fonction'
,'$direction'
,'$service'
,'$division'
,'$date_naissance'
,'$date_recrutement'
,'$sexe'
,'$carte_Identite'
,'$caisse'
,$grade'
,'$age')";
/* Erreur SQL (1064) : 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 '$req="insert into employer
(matricule
,nom_prenom
,adre' at line 1 */
/* Affected rows: 0 Lignes trouvées: 0 Avertissements: 0 Durée pour 0 of 2 queries: 0,000 sec. */
$req="insert into employer (matricule,nom_prenom,adresse,fonction,direction,service,division,date_naissance,date_recrutement,sexe,carte_Identite,caisse,grade,age) values('$matricule','$nom_prenom','$adresse','$fonction','$direction','$service','$division','$date_naissance','$date_recrutement','$sexe','$carte_Identite','$caisse',$grade','$age')";
/* Erreur SQL (1064) : 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 '$req="insert into employer (matricule,nom_prenom,adresse,fonction,direction,serv' at line 1 */
/* Affected rows: 0 Lignes trouvées: 0 Avertissements: 0 Durée pour 0 of 1 query: 0,000 sec. */
Messages postés
34699
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2022
358
Tu ne mets pas de php dans heidisql ..... il ne faut y mettre QUE les requetes SQL !
Messages postés
119
Date d'inscription
vendredi 27 mars 2015
Statut
Membre
Dernière intervention
2 avril 2019
>
Messages postés
34699
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2022

insert into employer 
(matricule
,nom_prenom
,adresse
,fonction
,direction
,service
,division
,date_naissance
,date_recrutement
,sexe
,carte_Identite
,caisse
,grade
,age)
values('$matricule'
,'$nom_prenom'
,'$adresse'
,'$fonction'
,'$direction'
,'$service'
,'$division'
,'$date_naissance'
,'$date_recrutement'
,'$sexe'
,'$carte_Identite'
,'$caisse'
,$grade'
,'$age');

Erreur SQL (1064) : 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 ''
,'$age')' at line 28 */
voici le message d'erreur qui m'affiche maintenant
Error !
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 '' ,'25')' at line 26
Requete :
insert into employer (matricule ,nom_prenom ,adresse ,direction ,service ,division ,date_naissance ,date_recrutement ,sexe ,carte_Identite ,caisse ,grade ,age) values('121785' ,'Moctar dit Toutah ould Mohamed' ,'TVZN' ,'Direction Administration Financier' ,'Personnel' ,'Comptabilite' ,'05/05/1990' ,'12/01/2012' ,'1' ,'1254879545' ,'CNAM' ,A' ,'25')

voici la table employe



CREATE TABLE IF NOT EXISTS `employer` (
`Id_emp` int(11) NOT NULL AUTO_INCREMENT,
`Id_dep` int(110) NOT NULL,
`nom_prenom` varchar(150) NOT NULL,
`adresse` varchar(80) NOT NULL,
`date_recrutement` date NOT NULL,
`service` varchar(50) NOT NULL,
`date_naissance` date NOT NULL,
`matricule` int(115) NOT NULL,
`direction` varchar(100) NOT NULL,
`sexe` varchar(50) NOT NULL,
`carte_Identite` int(11) NOT NULL,
`caisse` varchar(100) NOT NULL,
`grade` varchar(50) NOT NULL,
`age` int(11) NOT NULL,
`division` varchar(50) NOT NULL,
PRIMARY KEY (`Id_emp`),
KEY `Id_dep` (`Id_dep`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Contenu de la table `employer`
--


--
-- Contraintes pour les tables exportées
--

--
-- Contraintes pour la table `employer`
--
ALTER TABLE `employer`
ADD CONSTRAINT `employer_ibfk_1` FOREIGN KEY (`Id_dep`) REFERENCES `departement` (`Id_dep`);

Messages postés
34699
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2022
358 >
Messages postés
119
Date d'inscription
vendredi 27 mars 2015
Statut
Membre
Dernière intervention
2 avril 2019

Tu fais, dans ton script PHP, un ECHO de la requête ( comme ça tu vois les valeurs qui y sont insérées par ton code à la place de tes variable $cccc ) ... et c'est CELA que tu testes dans HEIDISQL.

par exemple... si j'ai, en PHP, un truc comme ça :
$xxx = 'Tar06';

$req = " SELECT * from mattable where toto='$xxx' ";

//Echo pour AFFICHER LA REQUETE A TESTER :
echo $req;


ce qui me donnera dans ma page internet lorsque j'ouvrirai ma page php :

SELECT * from mattable where toto='Tar06'
Messages postés
119
Date d'inscription
vendredi 27 mars 2015
Statut
Membre
Dernière intervention
2 avril 2019
>
Messages postés
34699
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2022

Est ce que ordre est important car j'ai pas respecté l'ordre du champs des table dans la requête