Page 1 sur 1

utilisation de marqueurs PDO::prepare

Posté : 21 déc. 2011, 01:19
par phyliares
Bonjour, totalement novice, je me permet de venir vers vous pour m'aider a comprendre l'utilisation des marqueurs.

Je realise un TP que je n'ai pas eu le temps de finir en cours, il s'agit d'un frontend pour un site de gestion d'offres d'emploi.

La requete suivante fonctionnait tres bien avant que je remarque qu'il fallait utiliser des marqueurs (?)
Je ne sais pas si j'ai un probleme de syntaxe ou d'ignorance ou les deux
	$queryinsert = $db->prepare("INSERT INTO gcv_candidatures(id_type_contrat, id_offre_emploi, nom, prenom, adresse, telephone, email, age, situation_famille, formation, experience, aptitudes, motivations, divers, date_saisie, date_modification) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
	$queryinsert->bindParam(1, $_POST[type_contrat]);
	$queryinsert->bindParam(2, $_POST[id_offre]);
	$queryinsert->bindParam(3, $_POST[nom]);
	$queryinsert->bindParam(4, $_POST[prenom]);
	$queryinsert->bindParam(5, $_POST[adresse]);
	$queryinsert->bindParam(6, $_POST[telephone]);
	$queryinsert->bindParam(7, $_POST[email]);
	$queryinsert->bindParam(8, $_POST[age]);
	$queryinsert->bindParam(9, $_POST[situation_famille]);
	$queryinsert->bindParam(10, $_POST[formation]);
	$queryinsert->bindParam(11, $_POST[experience]);
	$queryinsert->bindParam(12, $_POST[aptitudes]);
	$queryinsert->bindParam(13, $_POST[motivations]);
	$queryinsert->bindParam(14, $_POST[divers]);
	$queryinsert->bindParam(15, $date_jour);
	$queryinsert->bindParam(16, $date_jour);
    $queryinsert->execute();
Merci pour votre regard aguerri :)

Re: utilisation de marqueurs PDO::prepare

Posté : 21 déc. 2011, 10:03
par Mazarini
Bonjour,

Je ne connais pas la syntaxe de ce que tu utilises pour faire ton accès à la base de données, ni d'ailleurs la base utilisée. A priori, il doit exister un moyen de connaitre l'erreur via une fonction ou un variable. Dans le cas de msql, c'est les fonctions mysql_error() et mysql_errno().

En général, il est bien de vérifier la bonne exécution des requetes en testant un code retour ou avec des try/catch.

Tu peux essayer PDO::errorCode() et PDO::errorInfo() (voir doc http://www.php.net/manual/fr/pdo.error-handling.php)

Re: utilisation de marqueurs PDO::prepare

Posté : 21 déc. 2011, 11:27
par moogli
salut,

pour compléter l'info il faut utiliser http://www.php.net/manual/fr/pdo.errorinfo.php. cette méthode retourne un tableau, l'index deux contient le message d'erreur.

tu devrais indiquer les 3ème paramètre de bindvalue http://www.php.net/manual/fr/pdostatement.bindvalue.php

pourquoi une requête préparée ? c'est donc un boucle cette requête ? si ce n'est pas le cas une requête classique suffit avec utilisation de PDO::quote. (bien penser à indiquer aussi le type de paramètre).

quel ton niveau d'erreur de php ? s'il n'est pas à E_ALL|E_STRICT modifie le en conséquence, je vois 14 erreurs dans ton code !!!! (je suppose que tu n'as pas définie 14 constantes pour les nom des index du tableau $_POST ?).

tu peux aussi activer le report d'erreur de PDO pour qu'il lève une exception (a traiter avec try / catch)
$db->setAttribut(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

@+