|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||||
|
Invité régulier
![]() Inscription : avril 2011 Messages : 60 ![]() |
Bonjour a tous,
Je n'arrive pas a trouvé l'erreur que me retourne la console. erreur : Invalid parameter number: number of bound variables does not match number of tokens code : Code :
Code :
|
||||
|
|
00
|
|
|
#2 | |
|
Expert Confirmé
![]() ![]() |
Citation:
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
|
00
|
|
|
#3 | |||
|
Expert Confirmé
![]() ![]() |
Citation:
Code :
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|||
|
00
|
|
|
#4 | ||
|
Invité régulier
![]() Inscription : avril 2011 Messages : 60 ![]() |
J'ais fait les modification mais pas de réel changement :
erreur retourné : le fichier n'a pas l'extension attendue et Invalid parameter number: number of bound variables does not match number of tokens Code :
|
||
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() ![]() |
Est-ce-que tu es absolument sûr que toutes les valeurs attendues sont dans le tableau $_POST ?
Est-ce-que echo $extensionFichier.'/'; te renvoie bien une extension ?
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : avril 2011 Messages : 60 ![]() |
J'ais trois echo du avec un séparateur /
voila le retour des trois echo /Array// |
|
|
00
|
|
|
#7 | ||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 727 ![]() |
Salut
La syntaxe que tu utilise pour faire une insertion n'est pas bonne (sauf erreur). (c'est un mélange d'un INSERT et d'un UPDATE). La syntaxe c'est théoriquement comme ceci : Code sql :
Si le nombre (couple : renseigné/valeur) n'est pas concordant, alors ça va générer une erreur genre : number of bound variables does not match number of tokens, que tu as. Le nombre de champs renseignées : 1/ nom=:nom 2/ prenom=:prenom 3/ adresse=:adresse 4/ departement=:departement 5/ email=:email, tel=:tel 6/ date=:date 7/ sit_fam=:sit_fam 8/ age=:age 9/ formation=:formation 10/ experience=:experience 11/ langue=:langue 12/ divers=:divers 13/ cv=:cv 14/ poste=:poste 15/ poste2=:poste2 16/ poste3=:poste3 17/ poste4=:poste4 18/ 1departement=:1departement 19/ 1departement2=:1departement2 20/ 1departement3=:1departement3 21/ 1departement4=:1departement4 22/ 1region=:1region 23/ id_user=:id_user 24/ preavis=:preavis 25/ salaire=:salaire 26/ commentaire=:commentaire 27/ gestion=:gestion 28/ produits=:produits 29/ management=:management 30/ divers_eval=:divers_eval Les valeurs : 1/ $candidat -> bindParam('nom', $_POST['nom']); 2/ $candidat -> bindParam('prenom', $_POST['prenom']); 3/ $candidat -> bindParam('adresse', $_POST['adresse']); 4/ $candidat -> bindParam('departement', $_POST['dept'], PDO: 5/ $candidat -> bindParam('email', $_POST['email']); 6/ $candidat -> bindParam('tel', $_POST['tel'], PDO: 7/ $candidat -> bindParam('date', date('Y,m,d')); 8/ $candidat -> bindParam('sit_fam', $_POST['sit_fam']); 9/ $candidat -> bindParam('age', $_POST['jour'], PDO: 10/ $candidat -> bindParam('formation', $_POST['forma']); 11/ $candidat -> bindParam('experience', $_POST['expe']); 12/ $candidat -> bindParam('langue', $_POST['langue']); 13/ $candidat -> bindParam('divers', $_POST['divers']); 14/ $candidat -> bindParam('cv', $_POST['cv']); 15/ $candidat -> bindParam('poste', $_POST['poste']); 16/ $candidat -> bindParam('poste2', $_POST['poste2'], PDO: 17/ $candidat -> bindParam('poste3', $_POST['poste3'], PDO: 18/ $candidat -> bindParam('poste4', $_POST['poste4'], PDO: 19/ $candidat -> bindParam('1departement', $_POST['dept'], PDO: 20/ $candidat -> bindParam('1departement2', $_POST['dept2'], PDO: 21/ $candidat -> bindParam('1departement3', $_POST['dept3'], PDO: 22/ $candidat -> bindParam('1departement4', $_POST['dept4'], PDO: 23/ $candidat -> bindParam('1region', $_POST['region'], PDO: 24/ $candidat -> bindParam('id_user', $_SESSION['admin_id'], PDO: 25/ $candidat -> bindParam('preavis', $_POST['preavis']); 26/ $candidat -> bindParam('salaire', $_POST['salaire'], PDO: 27/ $candidat -> bindParam('commentaire', $_POST['divers']); 28/ $candidat -> bindParam('gestion', $_POST['gestion']); 29/ $candidat -> bindParam('produits', $_POST['produits']); 30/ $candidat -> bindParam('management', $_POST['management']); 31/ $candidat -> bindParam('divers_eval', $_POST['com'], PDO: Si je ne me trompe pas, il y a 30 de renseignés, et 31 valeurs. Ce n'est pas concordant, alors il y a quelque chose qu'il faudra corriger (une de trop, ou une à rajouter, ça dépent). Hormis l'erreur de syntaxe à corriger aussi.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||
|
|
00
|
|
|
#8 | |||
|
Expert Confirmé
![]() ![]() |
Citation:
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|||
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() ![]() |
Euh boulette ici : Il a bien 31 champs des 2 côtés. Je les avais recompté mais n'ayant que 10 doigts j'ai eu peur de ne pas arriver à 31
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
00
|
|
|
#10 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 727 ![]() |
Citation:
J'aurais appris quelque chose ce soir. Toujours est il qu'il faut que les couples nom/valeur soient concordant, sinon ça n'ira pas quand même. Suffit juste compter comme je l'ai fais plus haut, et ça se détecte tout de suite.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
00
|
|
|
#11 | |
|
Expert Confirmé
![]() ![]() |
Citation:
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() Inscription : avril 2011 Messages : 60 ![]() |
je vous avoue c'est la première fois que j'ai une erreur de ce type et je comprend pas grand chose ....
|
|
|
00
|
|
|
#13 | |||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 727 ![]() |
Citation:
![]() C'est quand même à notre ami le nOoB à utiliser la bonne technique pour le pas se tromper dans le nombre de champ, comme faire des saut de lignes, au lieu de tout mettre sur 1 ligne. Puis soit disant que les SET soient mieux, pas si sur. Code :
Essai avec cette syntaxe (plus courante à mon sens), et fait des saut de lignes, plus facile à compter. Puis de toute manière il y a des erreurs de conceptions, il y a trop de champ dans cette table. Cette table n'est pas conforme (3NF si je me trompe pas). Faudrait théoriquement revoir le concept des champs : poste, poste2, poste3, poste4 1departement, 1departement2, 1departement3, 1departement4. etc ... Mais là c'est une autre histoire.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|||
|
|
10
|
|
|
#14 |
|
Invité régulier
![]() Inscription : avril 2011 Messages : 60 ![]() |
Je suis tout a fait d'accord avec toi concernant la table concerné mais elle était la avant moi comme tout le reste du site ce qui n'est gère mieux concernat les autre table....
|
|
|
00
|
|
|
#15 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 727 ![]() |
Citation:
Là aussi faut que le nombre soient le bon. Si un champ n'accepte pas une valeur NULL (genre valeur POST inexistante), ça peu provoquer une erreur. Mais pour savoir au moins si la requête est bonne, mets y des valeur "en dur" et valide (au lieu de mettre celles de $_POST). Une ou 2 fois comme ça. Il y a toujours moyen de valider une partie de son code pour ne serait-ce pour éliminer une partie. Après on recherche ailleurs, du coté de $_POST par exemple.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
00
|
|
|
#16 | |
|
Expert Confirmé
![]() ![]() |
Citation:
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
|
00
|
|
|
#17 | ||
|
Invité régulier
![]() Inscription : avril 2011 Messages : 60 ![]() |
Concernant les post voici le retour (précision j'ai retiré un champ inutile )
nom prenom adresse 1 1234567890 2011/11/26 famille 2011 formations experience langue playchargekit_amer_0609.pdf 164 164 164 164 1 1 1 1 22 1 preavis 1234 divers gestions produits management commentaire la structure de la table Code :
|
||
|
|
00
|
|
|
#18 |
|
Invité régulier
![]() Inscription : avril 2011 Messages : 60 ![]() |
Concernant la requête j'ai trouvé d'ou provenait l'erreur exemple
1departement=:departement et non 1departement=:1departement ce qui comme les variable commençant par un chiffre provoque une erreur. |
|
|
00
|
|
|
#19 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 727 ![]() |
Citation:
![]() Au passage, tu devrais plutôt utiliser bindValue() au lieu de bindParam(), ou bindParam() est plus fait pour des insertions/update multiples. La valeur d'ailleurs "passe" "par référence" au lieu de "par valeur" pour bindValue(). Et pense y pour les champs comme poste, posteN, 1departement, 1departementN, mag_type, mag_typeN. Si tu peux bien évidemment. En tout cas il y a une relation 0-N entre ces données, et du coup il faudrait créer d'autres tables pour cela. Exemple pour les données posteN. -> Supprimer tous ces champs posteN de cette table -> créer une table "candidats_postes" (champs) : id_candidat_postes | id_candidat (idem pour les autres champs) Ce qui fait qu'il pourra avoir aucun "poste" pour un candidat, et pour d'autres 1, 5, 10, ... N postes : Il n'y aura pas de limite, sans compter que c'est bien plus pratique lors des mise à jours. Dans ton cas, s'il faut 1 poste de plus pour ne serait-ce pour 1 candidat, il faut rajouter un nouveau champ dans cette table candidat, ce qui n'est pas pratique (et non conforme).
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
00
|
|
|
#20 |
|
Invité régulier
![]() Inscription : avril 2011 Messages : 60 ![]() |
Donc si j'ais bien compris BindParam pour les INSERT et UPDATE et Bindvalue pour le reste.
Concernant l'upload du fichier j'avais oublié enctype="multipart/form-data" en premier lieu ensuite apparait une erreur avec move_upload : Voici le retour des echo : playchargekit_amer_0609.pdf/Array/pdf/ Message d'erreur : Warning: move_uploaded_file(): open_basedir restriction in effect. File(/home/www/URL du site/upload/cv/_.pdf) is not within the allowed path(s): (/var/www/clients/client3/web297/web:/var/www/clients/client3/web297/tmp:/var/www/URL du site/web:/srv/www/dev.URL du site/web:/usr/share/php5:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin) in /var/www/clients/client3/web297/web/admin/modules/Candidats/index.php on line 396 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com