MYSQL : Erreur de syntaxe près de ' à la ligne 1

Répondre
billledouble
le 12/08/2009 à 11:47
billledouble
Bonjour,

Cela fait deux heures que je cherche à corriger cette erreur qui apparaît lorsque je tente d'enregistrer les données saisies dans la BDD correspondante, mais ne trouve pas :

Erreur de syntaxe près de 'div) VALUES ('test', 'test', 'test', 'test', 'test', 'test', 'te' à la ligne 1

Merci d'avance pour vos suggestions avisées,

Bill

Le code

<?php
//connection au serveur & sélection de la base de données

require_once('Connections/gestion_if.php');

//récupération des valeurs des champs

$famprogc = $_POST['famprogc'];
$perprogc = $_POST['perprogc'];
$nomprogc = $_POST['nomprogc'];
$dotaprogc = $_POST['dotaprogc'];
$natprogc = $_POST['natprogc'];
$bailprogc = $_POST['bailprogc'];
$docsprogc = $_POST['docsprogc'];
$conteuprogc = $_POST['conteuprogc'];
$contnatprogc = $_POST['contnatprogc'];
$objprogc = $_POST['objprogc'];
$nomprog = $_POST['nomprog'];
$dotaprog = $_POST['dotaprog'];
$natprog = $_POST['natprog'];
$docsprog = $_POST['docsprog'];
$conteuprog = $_POST['conteuprog'];
$contnatprog = $_POST['contnatprog'];
$objprog = $_POST['objprog'];
$nosprog = $_POST['nosprog'];
$nomsprog = $_POST['nomsprog'];
$objsprog = $_POST['objsprog'];
$dotasprog = $_POST['dotasprog'];
$noobjmsp = $_POST['noobjmsp'];
$nomobjmsp = $_POST['nomobjmsp'];
$objobjmsp = $_POST['objobjmsp'];
$dotaobjmsp = $_POST['dotaobjmsp'];
$nodomsm = $_POST['nodomsm'];
$nomdomsm = $_POST['nomdomsm'];
$objdomsm = $_POST['objdomsm'];
$dotadomsm = $_POST['dotadomsm'];
$ratprog = $_POST['ratprog'];
$aireint = $_POST['aireint'];
$paysel = $_POST['paysel'];
$regel = $_POST['regel'];
$depel = $_POST['depel'];
$parteu = $_POST['parteu'];
$critel = $_POST['critel'];
$nomact = $_POST['nomact'];
$themact = $_POST['themact'];
$sthemact = $_POST['sthemact'];
$objcontact = $_POST['objcontact'];
$typeactel = $_POST['typeactel'];
$motcle = $_POST['motcle'];
$depelact = $_POST['depelact'];
$depinelact = $_POST['depinelact'];
$critqualact = $_POST['critqualact'];
$dureproj = $_POST['dureproj'];
$benpot = $_POST['benpot'];
$montsubv = $_POST['montsubv'];
$tauxsubv = $_POST['tauxsubv'];
$appelproj = $_POST['appelproj'];
$carappproj = $_POST['carappproj'];
$datelimcand = $_POST['datelimcand'];
$lieudepdos = $_POST['lieudepdos'];
$docs = $_POST['docs'];
$div = $_POST['div'];

//création & exécution de la requête SQL

$sql = "INSERT INTO gestion_if (famprogc, perprogc, nomprogc, dotaprogc, natprogc, bailprogc, docsprogc, conteuprogc, contnatprogc, objprogc, nomprog, dotaprog, natprog, docsprog, conteuprog, contnatprog, objprog, nosprog, nomsprog, objsprog, dotasprog, noobjmsp, nomobjmsp, objobjmsp, dotaobjmsp, nodomsm, nomdomsm, objdomsm, dotadomsm, ratprog, aireint, paysel, regel, depel, parteu, critel, nomact, themact, sthemact, objcontact, typeactel, motcle, depelact, depinelact, critqualact, dureproj, benpot, montsubv, tauxsubv, appelproj, carappproj, datelimcand, lieudepdos, docs, div) VALUES ('$famprogc', '$perprogc', '$nomprogc', '$dotaprogc', '$natprogc', '$bailprogc', '$docsprogc', '$conteuprogc', '$contnatprogc', '$objprogc', '$nomprog', '$dotaprog', '$natprog', '$docsprog', '$conteuprog', '$contnatprog', '$objprog', '$nosprog', '$nomsprog', '$objsprog', '$dotasprog', '$noobjmsp', '$nomobjmsp', '$objobjmsp', '$dotaobjmsp', '$nodomsm', '$nomdomsm', '$objdomsm', '$dotadomsm', '$ratprog', '$aireint', '$paysel', '$regel', '$depel', '$parteu', '$critel', '$nomact', '$themact', '$sthemact', '$objcontact', '$typeactel', '$motcle', '$depelact', '$depinelact', '$critqualact', '$dureproj', '$benpot', '$montsubv', '$tauxsubv', '$appelproj', '$carappproj', '$datelimcand', '$lieudepdos', '$docs', '$div')";

$result = mysql_query($sql) or die(mysql_error());
echo "Nouvelle ligne de financement insérée dans la base de données !";
?>
bill
moogli
le 12/08/2009 à 14:41
moogli
Yop

peut tu nous montrer le create table (afin de tester) ainsi que le contenue de $sql lors que l'erreur
par exemple
$result = mysql_query($sql) or die('Erreur SQL<br />'.$sql.'<br /><br />'.mysql_error());

@+
Il en faut peu pour être heureux !!!!!
billledouble
le 12/08/2009 à 15:03
billledouble
>Bonjour Moogli

Merci pour ton intérêt:

tu trouveras ci après le message d'erreur :

"Erreur de syntaxe près de 'div) VALUES ('', 'test', 'test', 'test', 'test', 'test', 'test',' à la ligne 1"

ci après ma table :

CREATE TABLE `gestion_if` (
`id_gestion` int(10) NOT NULL auto_increment COMMENT 'clé primaire',
`famprogc` longtext COMMENT '1.1 Famille de programme cadre',
`perprogc` longtext COMMENT '1.2 Période de programmation',
`nomprogc` longtext COMMENT '1.3 Nom du programme cadre',
`dotaprogc` longtext COMMENT '1.4 Dotation du programme cadre',
`natprogc` longtext COMMENT '1.5 Nature du programme cadre',
`bailprogc` longtext COMMENT '1.6 Bailleur du programme cadre',
`docsprogc` longtext COMMENT '1.7 Documents du programme cadre',
`conteuprogc` longtext COMMENT '1.8 Points de contact européen du programme cadre',
`contnatprogc` longtext COMMENT '1.9 Points de contact nationaux ou régionaux du programme cadre',
`objprogc` longtext COMMENT '1.10 Objectifs du programme cadre',
`nomprog` longtext COMMENT '2.1 Nom du programme',
`dotaprog` longtext COMMENT '2.2 Dotation du programme',
`natprog` longtext COMMENT '2.3 Nature du programme',
`docsprog` longtext COMMENT '2.4 Documents du programme',
`conteuprog` longtext COMMENT '2.5 Points de contact européen du programme',
`contnatprog` longtext COMMENT '2.6 Points de contact nationaux ou régionaux du programme',
`objprog` longtext COMMENT '2.7 Objectifs du programme',
`nosprog` longtext COMMENT '3.1.1 No du sous programme',
`nomsprog` longtext COMMENT '3.1.2 Nom du sous programme',
`objsprog` longtext COMMENT '3.1.3 Objectifs du sous programme',
`dotasprog` longtext COMMENT '3.1.4 Dotation du sous programme',
`noobjmsp` longtext COMMENT '3.2.1 No de l''objectif (pour les PAC), mesure ou sous priorité (pour les PO)',
`nomobjmsp` longtext COMMENT '3.2.2 Nom de l''objectif (pour les PAC), mesure ou sous priorité (pour les PO)',
`objobjmsp` longtext COMMENT '3.2.3 Objectifs de l''objectif (pour les PAC), mesure ou sous priorité (pour les PO)',
`dotaobjmsp` longtext COMMENT '3.2.4 Dotation de l''objectif (pour les PAC), mesure ou sous priorité (pour les PO)',
`nodomsm` longtext COMMENT '3.3.1 No du domaine (pour les PAC), sous Mesure (pour les PO)',
`nomdomsm` longtext COMMENT '3.3.2 Nom du domaine (pour les PAC), sous Mesure (pour les PO)',
`objdomsm` longtext COMMENT '3.3.3 Objectifs du domaine (pour les PAC), sous Mesure (pour les PO)',
`dotadomsm` longtext COMMENT '3.3.4 Dotation du domaine (pour les PAC), sous Mesure (pour les PO)',
`ratprog` longtext COMMENT '4.1 Rattachement au programme',
`aireint` longtext COMMENT '4.2 Aire d’intervention',
`paysel` longtext COMMENT '4.3 Pays éligibles',
`regel` longtext COMMENT '4.4 Régions éligibles',
`depel` longtext COMMENT '4.5 Départements éligibles',
`parteu` longtext COMMENT '4.6 Obligation partenariat européen',
`critel` longtext COMMENT '4.7 Critères d''éligibilité géographique et de partenariat',
`nomact` longtext COMMENT '4.8 Nom de l''action',
`themact` longtext COMMENT '4.9 Thématiques de l''action',
`sthemact` longtext COMMENT '4.10 Sous-thématiques de l''action',
`objcontact` longtext COMMENT '4.11 Objectifs et contenu de l''action',
`typeactel` longtext COMMENT '4.12 Types d''actions éligibles',
`motcle` longtext COMMENT '4.13 Mots-clés',
`depelact` longtext COMMENT '4.14 Dépenses éligibles de l''action',
`depinelact` longtext COMMENT '4.15 Dépenses inéligibles de l''action',
`critqualact` longtext COMMENT '4.16 Critères qualitatifs de sélection des actions',
`dureproj` longtext COMMENT '4.17 Durée du projet',
`benpot` longtext COMMENT '4.18 Bénéficiaires potentiels',
`montsubv` longtext COMMENT '4.19 Montant maximum et minimum de la subvention',
`tauxsubv` longtext COMMENT '4.20 Taux maximum et minimum de la subvention',
`appelproj` longtext COMMENT '4.21 Appel à projet',
`carappproj` longtext COMMENT '4.22 Caractéristiques de l''appel à projet en cours',
`datelimcand` longtext COMMENT '4.23 Date limite de dépôt des candidatures',
`lieudepdos` longtext COMMENT '4.24 Lieu de dépôt du dossier et service instructeur',
`docs` longtext COMMENT '4.25 Documents',
`div` longtext COMMENT '4.26 Divers',
PRIMARY KEY (`id_gestion`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=50 ;


Ci après le code de la page dans laquelle je saisi les données que je récupère ensuite dans le code dont tu disposes d'ores et déjà :

NdM : j'ai mis le code sur le Wall la c'était beaucoup trop long ;)
Moogli
bill
moogli
le 13/08/2009 à 14:19
moogli
raaaaaaaa j'm'en veut, ton problème viens du fait que div est un mot clef de mysql (division entière), renomme le champ (je sais même pas comment t'a pu crer ta table comme ça, p'tet avec les ` ...).

avec un nom différent tu ne devrait plu avoir de problème ;)


@+
Il en faut peu pour être heureux !!!!!
LupusMic
le 13/08/2009 à 20:24
LupusMic
Comme dit moogli, tu peux renommer la colonne, ou alors utiliser les backticks « ` ».

Ceci dit, ta table m'a laissé sans voix. Ça faisait longtemps que je n'avais pas vu autant de colonnes pour une même tables. C'est toujours le signe d'une mauvaise analyse du problème. Mais plus grave, ce sera ingérable sur le long terme.

D'ailleurs, quel est le nom de l'outil pourri qui t'a vomi le HTML ?
C'est le même outil qui génère la table ?

Si tu veux jeter l'ensemble des variable HTTP POST dans ton contexte d'exécution, il existe la fonction extract.

Mais il y a une chose qu'il faut que tu gardes en tête : ton script n'a aucune notion de sécurité, ce qui est gênant. Recherche l'acronyme XSS sur lephpfacile.com, ou le web. On en a beaucoup parlé.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours