Analyse erreur fatale base Mysql
Bonjour,
J'ai créé une fonction qui récupère des POST pour les intégrer dans une table, cette fonction marchait sur ma première table mais pas sur une nouvellement créée:
Voici l'erreur générée:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined'
Le problème vient-il de la construction de ma table ou d'une erreur dans mon code, le voici pour ceux que ça intéresse:
le modèle des POST envoyés
Code:
1 2
|
<input type="text" name="nom_de_la_table['.$id.'][11]" value="" /> |
$id est soit l'index de la ligne à modifier ou vaut "plus" dans le cadre d'une création de ligne
"11" est le nom du champ de ma table.
La fonction qui permet théoriquement d'alimenter avec un formulaire plusieurs tables d'une base:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
function ecriture_base($base,$post){
// j'ouvre la connexion
if($post!='' or $get_id>0){
$bdd = new PDO ('mysql:host=localhost;dbname='.$base.';charset=utf8', 'util', 'pass');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
if($post!=''){
foreach($post as $table => $lgn){
foreach($lgn as $key => $var){
if($key=='plus' or $key==''){
ksort($var);
//creation d'une ligne
$req = $bdd->prepare('INSERT INTO '.$table.' ( '.implode(',',array_keys($var)).') VALUES (:'.implode(',:',array_keys($var)).')');
$req->execute($var);
}
if($key>0){
//Modif = UPDATE fichier SET champ à corriger = modifcation
foreach($var as $id => $val){$valeur[]=' '.$id.' = "'.$val.'" ';}
$req = $bdd->prepare('UPDATE '.$table.' SET '.implode(',',$valeur).' where id = :search');
$req->execute(array('search' => $key));
}
}
}
}
} |
Merci de vos réponses.