msi79
Messages postés509Date d'inscriptionlundi 24 août 2009StatutMembreDernière intervention 2 mai 2023
-
2 nov. 2017 à 11:15
SkyCrasher -
8 nov. 2017 à 09:24
Bonjour,
Je tente d'enserrer des données dans une table en utilisant PDO.
mais il semble que qu'il y a une erreur dans la requête.
voici l'erreur quand j'execute en direct dans la base de données:
#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 ':periode_etabl_bulletin,:periode_etabl_bulletin_annee,:taux_grad,:num_ordre,:mat' at line 2
voici ma requête :
$tab = array(
':periode_etabl_bulletin' => $_GET['periode']
,':periode_etabl_bulletin_annee' => $_GET['annee']
,':taux_grad' => $_POST["taux_grad"]
,':num_ordre' => $_POST["num_ordre"]
,':matricule' => $matricule
,':noms' => $rows_pers["nom"]
,':prenoms' => $rows_pers["prenom"]
,':nationalite' => $rows_pers["nationalie"]
,':nb_mois_trav_effect' => $n_nbre_mois
,':date_dept_cg' => ''
,':cg_ann_acqui' => ''
,':fonction' => $rows_pers["fonction"]
,':date_entree' => $rows_pers["date"]
,':ctg' => ''
,':sit_fam' => $rows_pers["sit_fam"]
,':chef_fm' => $rows_pers["chef_fm"]
,':homfem' => $rows_pers["sexe"]
,':nb_enft' => '0'
,':nb_part' => ''
,':num_cnps' => $rows_pers["num_cnps"]
,':salaire_brut' => $rows_sal[$lemois]
,':nbrejw' => '30'
,':sursalaire' => '0'
,':prim_resp' => '0'
,':prim_gard' => '0'
,':indem_transp' => '0'
,':type_sal' => 'Mensuel'
,':paymnt' => 'Espece'
,':ma_session' => 'Mis79'
,':date' => $date_utc
,':id_get' => $id_pers
,':jour' => $jour
,':mois' => $mois
,':annee' => $annee
);
$sql_absc = "INSERT INTO bulletin(periode_etabl_bulletin,periode_etabl_bulletin_annee,taux_grad,num_ordre,matricule,noms,prenoms,nationalite,nb_mois_trav_effect,date_dept_cg,cg_ann_acqui,fonction,date_entree,ctg,sit_fam,chef_fm,homfem,nb_enft,nb_part,num_cnps,salaire_brut,nbrejw,sursalaire,prim_resp,prim_gard,indem_transp,type_sal,paymnt,ma_session,date,id_get,jour,mois,annee)
VALUES (:periode_etabl_bulletin,:periode_etabl_bulletin_annee,:taux_grad,:num_ordre,:matricule,:noms,:prenoms,:nationalite,:nb_mois_trav_effect,:date_dept_cg,:cg_ann_acqui,:fonction,:date_entree,:ctg,:sit_fam,:chef_fm,:homfem,:nb_enft,:nb_part,:num_cnps,:salaire_brut,:nbrejw,:sursalaire,:prim_resp,:prim_gard,:indem_transp,:type_sal,:paymnt,:ma_session,:date,:id_get,:jour,:mois,:annee)";
$sql_absc;
$req_absc = $bdd->prepare($sql_absc);
// cette méthode te retourne true/false si ça a réussi/échoué
$result = $req_absc->execute($tab);
// Du coup, on peux tester sur le retour et afficher l'erreur en cas de soucis
if (!$result) {
// ça t'affiche juste un code. C'est suffisant en prod pour que l'utilisateur te fasse un retour
echo "Une erreur est survenue : " . $req_absc->errorCode();
// Mais en dev, pour comprendre, tu peux faire ça :
print_r($req_absc->errorInfo());
}
voici la structure de ma table:
CREATE TABLE IF NOT EXISTS `bulletin` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`periode_etabl_bulletin` varchar(15) NOT NULL,
`periode_etabl_bulletin_annee` varchar(10) NOT NULL,
`taux_grad` int(10) NOT NULL,
`num_ordre` varchar(30) NOT NULL,
`matricule` varchar(30) NOT NULL,
`noms` varchar(200) NOT NULL,
`prenoms` varchar(200) NOT NULL,
`nationalite` varchar(120) NOT NULL,
`nb_mois_trav_effect` varchar(15) NOT NULL,
`date_dept_cg` varchar(30) NOT NULL,
`cg_ann_acqui` varchar(60) NOT NULL,
`fonction` varchar(150) NOT NULL,
`date_entree` varchar(60) NOT NULL,
`ctg` varchar(30) NOT NULL,
`sit_fam` varchar(60) NOT NULL,
`chef_fm` varchar(10) NOT NULL,
`homfem` varchar(60) NOT NULL,
`nb_enft` varchar(10) NOT NULL,
`nb_part` varchar(10) NOT NULL,
`num_cnps` varchar(30) NOT NULL,
`salaire_brut` int(30) NOT NULL,
`nbrejw` int(10) NOT NULL,
`sursalaire` varchar(30) NOT NULL,
`prim_resp` varchar(30) NOT NULL,
`prim_gard` varchar(30) NOT NULL,
`indem_transp` varchar(30) NOT NULL,
`type_sal` varchar(80) NOT NULL,
`paymnt` varchar(50) NOT NULL,
`ma_session` varchar(100) NOT NULL,
`date` datetime NOT NULL,
`id_get` int(11) NOT NULL,
`jour` varchar(30) NOT NULL,
`mois` varchar(30) NOT NULL,
`annee` varchar(30) NOT NULL,
`date2` varchar(30) NOT NULL,
`id_period` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;