Erreur update

Eléphant du PHP | 256 Messages

16 mars 2017, 17:01

Bonjour une petite idée de cette erreur ? merci de m'éclairer

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in C:\Program Files\EasyPHP-5.3.8.1\www\source\add_club.php:109 Stack trace: #0 C:\Program Files\EasyPHP-5.3.8.1\www\source\add_club.php(109): PDOStatement->execute(Array) #1 {main} thrown in C:\Program Files\EasyPHP-5.3.8.1\www\source\add_club.php on line 109

Mammouth du PHP | 786 Messages

16 mars 2017, 17:25

avec du code, ce serait mieux.
le nombre de paramètres dans la requête est différent de celui passé lors de l'exécution.

Eléphant du PHP | 256 Messages

17 mars 2017, 10:05

bonjour voilà le code sorry.
$pseudo = filter_input(INPUT_POST, 'pseudo');
$id_membre = filter_input(INPUT_POST, 'id_membre');

$nom = filter_input(INPUT_POST, 'nom');
$adresse = filter_input(INPUT_POST, '$adresse');
$ville = filter_input(INPUT_POST, 'ville');
$cp = filter_input(INPUT_POST, 'cp');
$pays = filter_input(INPUT_POST, 'pays');
$region = filter_input(INPUT_POST, 'region');
$tel = filter_input(INPUT_POST, 'tel');
$gsm = filter_input(INPUT_POST, 'gsm');
$mail = filter_input(INPUT_POST, 'mail');
$web = filter_input(INPUT_POST, 'web');

$lundi = filter_input(INPUT_POST, 'lundi');
$lutype = filter_input(INPUT_POST, 'lutype');
$luprixcpl = filter_input(INPUT_POST, 'luprixcpl');
$luprixf = filter_input(INPUT_POST, 'luprixf');
$luprixtv = filter_input(INPUT_POST, 'luprixtv');
$luprixh = filter_input(INPUT_POST, 'luprixh');

$mardi = filter_input(INPUT_POST, 'mardi');
$martype = filter_input(INPUT_POST, 'martype');
$marprixcpl = filter_input(INPUT_POST, 'marprixcpl');
$marprixf = filter_input(INPUT_POST, 'marprixf');
$marprixtv = filter_input(INPUT_POST, 'marprixtv');
$marprixh = filter_input(INPUT_POST, 'marprixh');

$mercredi = filter_input(INPUT_POST, 'mercredi');
$mertype = filter_input(INPUT_POST, 'mertype');
$merprixcpl = filter_input(INPUT_POST, 'merprixcpl');
$merprixf = filter_input(INPUT_POST, 'merprixf');
$merprixtv = filter_input(INPUT_POST, 'merprixtv');
$merprixh = filter_input(INPUT_POST, 'merprixh');

$jeudi = filter_input(INPUT_POST, 'jeudi');
$jeutype = filter_input(INPUT_POST, 'jeutype');
$jeuprixcpl = filter_input(INPUT_POST, 'jeuprixcpl');
$jeuprixf = filter_input(INPUT_POST, 'jeuprixf');
$jeuprixtv = filter_input(INPUT_POST, 'jeuprixtv');
$jeuprixh = filter_input(INPUT_POST, 'jeuprixh');

$vendredi = filter_input(INPUT_POST, 'vendredi');
$ventype = filter_input(INPUT_POST, 'ventype');
$venprixcpl = filter_input(INPUT_POST, 'venprixcpl');
$venprixf = filter_input(INPUT_POST, 'venprixf');
$venprixtv = filter_input(INPUT_POST, 'venprixtv');
$venprixh = filter_input(INPUT_POST, 'venprixh');

$samedi = filter_input(INPUT_POST, 'samedi');
$samtype = filter_input(INPUT_POST, 'samtype');
$samprixcpl = filter_input(INPUT_POST, 'samprixcpl');
$samprixf = filter_input(INPUT_POST, 'samprixf');
$samprixtv = filter_input(INPUT_POST, 'samprixtv');
$samprixh = filter_input(INPUT_POST, 'samprixh');

$dimanche = filter_input(INPUT_POST, 'dimamche');
$dimtype = filter_input(INPUT_POST, 'dimtype');
$dimprixcpl = filter_input(INPUT_POST, 'dimprixcpl');
$dimprixf = filter_input(INPUT_POST, 'dimprixf');
$dimprixtv = filter_input(INPUT_POST, 'dimprixtv');
$dimprixh = filter_input(INPUT_POST, 'dimprixh');

$detail_club = filter_input(INPUT_POST, 'detail_club');


  if(!empty($_POST['choix'])){
	  $choix ='';
	  for ($i=0;$i<count($_POST['choix']);$i++){
	  $choix .= $_POST['choix'][$i];
	  }
  }
            $compte_club = ('UPDATE club SET        pseudo=:pseudo, id_membre=:id_membre
			                                        nom=:nom,
                                                    adresse=:adresse, 
                                                    ville=:ville, 
                                                    cp=:cp,
													pays=:pays,
                                                    region=:region,
                                                    tel=:tel,
                                                    gsm=:gsm,
                                                    mail=:mail,
                                                    web=:web,
													
                                                    lundi=:lundi,lutype=:lutype,luprixcpl=:luprixcpl,luprixf=:luprixf,luprixtv=:luprixtv,luprixh=:luprixh,
													mardi=:mardi,martype=:martype,marprixcpl=:marprixcpl,marprixf=:marprixf,marprixtv=:marprixtv,marprixh=:marprixh,
													mercredi=:mercredi,mertype=:mertype,merprixcpl=:merprixcpl,merprixf=:merprixf,merprixtv=:merprixtv,merprixh=:merprixh,
													jeudi=:jeudi,jeutype=:jeutype,jeuprixcpl=:jeuprixcpl,jeuprixf=:jeuprixf,jeuprixtv=:jeuprixtv,jeuprixh=:jeuprixh,
													vendredi=:vendredi,ventype=:ventype,venprixcpl=:venprixcpl,venprixf=:venprixf,venprixtv=:venprixtv,venprixh=:venprixh,
													samedi=:samedi,samtype=:samtype,samprixcpl=:samprixcpl,samprixf=:samprixf,samprixtv=:samprixtv,samprixh=:samprixh,
													dimanche=:dimanche,dimtype=:dimtype,dimprixcpl=:dimprixcpl,dimprixf=:dimprixf,dimprixtv=:dimprixtv,dimprixh=:dimprixh,

                                                    detail_club=:detail_club  WHERE pseudo=:pseudo');
  			
            $req_plus = $connection->prepare($compte_club);			
            $req_plus->execute(array('pseudo'=>$pseudo,'id_membre'=>$id_membre,
			                         ':nom'=>$nom,':adresse'=>$adresse,':ville'=>$ville,':cp'=>$cp,':pays'=>$pays,':region'=>$region,':tel'=>$tel,':gsm'=>$gsm,':mail'=>$mail,':web'=>$web,
			
									 ':lundi'=>$lundi,':lutype'=>$lutype,':luprixcpl'=>$luprixcpl,':luprixf'=>$luprixf,':luprixtv'=>$luprixtv,':luprixh'=>$luprixh,
									 ':mardi'=>$mardi,':martype'=>$martype,':marprixcpl'=>$marprixcpl,':marprixf'=>$marprixf,':marprixtv'=>$marprixtv,':marprixh'=>$marprixh,
									 ':mercredi'=>$mercredi,':mertype'=>$mertype,':merprixcpl'=>$merprixcpl,':merprixf'=>$merprixf,':merprixtv'=>$merprixtv,':merprixh'=>$merprixh,
									 ':jeudi'=>$jeudi,':jeudtype'=>$jeutype,':jeuprixcpl'=>$jeuprixcpl,':jeuprixf'=>$jeuprixf,':jeuprixtv'=>$jeuprixtv,':jeuprixh'=>$jeuprixh,
									 ':vendredi'=>$vendredi,':ventype'=>$ventype,':venprixcpl'=>$venprixcpl,':venprixf'=>$venprixf,':venprixtv'=>$venprixtv,':venprixh'=>$venprixh,
									 ':samedi'=>$samedi,':samtype'=>$samtype,':samprixcpl'=>$samprixcpl,':samprixf'=>$samprixf,':samprixtv'=>$samprixtv,':samprixh'=>$samprixh,
									 ':dimanche'=>$dimanche,':dimtype'=>$dimtype,':dimprixcpl'=>$dimprixcpl,':dimprixf'=>$dimprixf,':dimprixtv'=>$dimprixtv,':dimprixh'=>$dimprixh,
									 
                                     ':detail_club'=>$detail_club)); // ici l'erreur

Eléphant du PHP | 256 Messages

17 mars 2017, 10:28

voilà la structure de la table
CREATE TABLE club (
  id_club int(4) NOT NULL auto_increment,
  id_membre int(11) NOT NULL,
  pseudo char(30) NOT NULL,
  nom char(30) NOT NULL,
  adresse varchar(255) NOT NULL,
  ville varchar(255) NOT NULL,
  cp int(4) NOT NULL,
  pays varchar(255) NOT NULL,
  region varchar(255) NOT NULL,
  tel int(11) NOT NULL,
  gsm int(11) NOT NULL,
  mail varchar(255) NOT NULL,
  web varchar(255) NOT NULL,
  lundi varchar(255) NOT NULL,
  lutype varchar(255) NOT NULL,   
  luprixcpl int(4) NOT NULL,
  luprixf int(4) NOT NULL,
  luprixtv int(4) NOT NULL,
  luprixh int(4) NOT NULL,
  mardi varchar(255) NOT NULL,
  martype varchar(255) NOT NULL,
  marprixcpl int(4) NOT NULL,
  marprixf int(4) NOT NULL,
  marprixtv int(4) NOT NULL,
  marprixh int(4) NOT NULL,
  mercredi varchar(255) NOT NULL,
  mertype varchar(255) NOT NULL,
  merprixcpl int(4) NOT NULL,
  merprixf int(4) NOT NULL,
  merprixtv int(4) NOT NULL,
  merprixh int(4) NOT NULL,
  jeudi varchar(255) NOT NULL,
  jeutype varchar(255) NOT NULL,
  jeuprixcpl int(4) NOT NULL,
  jeuprixf int(4) NOT NULL,
  jeuprixtv int(4) NOT NULL,
  jeuprixh int(4) NOT NULL,
  vendredi varchar(255) NOT NULL,
  ventype varchar(255) NOT NULL,
  venprixcpl int(4) NOT NULL,
  venprixf int(4) NOT NULL,
  venprixtv int(4) NOT NULL,
  venprixh int(4) NOT NULL,
  samedi varchar(255) NOT NULL,
  samtype varchar(255) NOT NULL,
  samprixcpl int(4) NOT NULL,
  samprixf int(4) NOT NULL,
  samprixtv int(4) NOT NULL,
  samprixh int(4) NOT NULL,
  dimanche varchar(255) NOT NULL,
  dimtype varchar(255) NOT NULL,
  dimprixcpl int(4) NOT NULL,
  dimprixf int(4) NOT NULL,
  dimrixtv int(4) NOT NULL,
  dimprixh int(4) NOT NULL,
  detailclub longtext NOT NULL,
  PRIMARY KEY (`id_club`),
  INDEX (`id_membre`)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;

Mammouth du PHP | 1180 Messages

17 mars 2017, 11:32

J'ai pas compté tes paramètres car il y en a beaucoup et je suppose que tu l'a fait

mais j'ai vu ceci
$req_plus->execute(array('pseudo'=>$pseudo,'id_membre'=>$id_membre,
à mon avis ajouter des : devant devrait aider
$req_plus->execute(array(':pseudo'=>$pseudo,':id_membre'=>$id_membre,

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 8670 Messages

17 mars 2017, 11:43

salut,

première chose : ilte manque une virgule après id_membre=:id_membre donc déjà la syntaxe SQL n'est pas bonne ;)

je me demande si cela ne joue pas non plus sur le nombre de marqueurs trouvé par PDO (du genre le nom du marqueurs c'est tous ce qu'il y a entre : et la prochaine virgule ;) )

avec ça tu devrais avoir moins de soucis.

deuxième chose : quand je vois la table (il y a quand même 56 champs !!!) je pense tout de suite à un problème de conception du modèle.
notamment au niveau des colonnes qui ont le même nom préfixé par un jour de la semaine => ce genre de chose c'est une erreur.

cela devrait être une table
tarif_club table (
tarif_club_id int not null auto_increment primary key,
id_club int(4) NOT NULL,
dayNumber int not null check (dayNumber between 0 and 6),
jeSaisPasCPasParlantTonTruc varchar(255) NOT NULL,
type varchar(255) NOT NULL,
prixcpl int(4) NOT NULL,
prixf int(4) NOT NULL,
prixtv int(4) NOT NULL,
prixh int(4) not null
);

le n° de jour c'est zéro à 6 (ou 1 à 7 suivant tes conventions). en php les deux existent il s'agit des paramètres N et w de la fonction date)


raa c'est quoi ces gens plus rapide que moi ;)

donc en plus spols a raison il te manque : dans les noms de marqueurs (a voir il me semblait que cela ne dérangé pas PDO, ceci dit cela ne peux pas faire de mal d'être cohérent ;))
@+
Il en faut peu pour être heureux ......