Invalid parameter number: parameter was not defined

Par Carouge10, il y a 10 ans


Bonsoir,

Je développe une application pour la gestion de livres en interne et je bloque sur une chose basique mais sur laquelle un oeil (ou plusieurs) pourrait m'aider car impossible de trouver d'où viens le problème.

Le code suivant me retourne l'erreur : Invalid parameter number: parameter was not defined'

try { $pdo = new PDO('mysql:host=localhost;dbname=book;charset=utf8', '****', '****', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } while (!feof($monfichier)) { //on parcourt toutes les lignes $ligne_data = utf8_encode(fgets($monfichier)); $data_file = explode("\t", $ligne_data); if(isset($data_file)){ if ($mode === "Remplacement"){ $data = array(); $data['id-produit'] = $data_file[11]; $data['nom-produit'] = $data_file[0]; $data['id-offre'] = $data_file[1]; $data['sku-vendeur'] = $data_file[2]; $data['prix'] = $data_file[3]; $data['quantite'] = intval($data_file[4]); $data['date-ouverture'] = $data_file[5]; $data['type-id-produit'] = intval($data_file[6]); $data['note-etat-article'] = $data_file[7]; $data['etat-produit'] = $data_file[8]; // Récupération du numéro du carton $position = strrpos($data_file[7],"LNM"); $carton = substr($data_file[7],$position+3); if ($carton != 0){ $data['secteur'] = $carton; } else { $data['secteur'] = 0; } var_dump($data_file); $req = $pdo->prepare("INSERT INTO `livre`(`nom-produit`) VALUES (:nom-produit)"); $req->execute(array( 'nom-produit' => $data_file[0]; ));

J'ai simplifié le code et même avec un seul champ, j'ai le message d'erreur.

Le code n'est pas complet.
Le champ 'nom-produit' est un varchar de 255.
Merci de votre aide.

3 réponses

Carouge10, il y a 10 ans

Après de nombreux test et essai, il s'avère que c'est le - qui pose problème.
Donc sujet résolu.

Huggy, il y a 10 ans

Profite-en pour renommer tous tes champs, l'utilisation du tiret t'oblige à les encadrer par des quotes, c'est très chiant (à mon goût)

Carouge10, il y a 10 ans

oui c'est ce que j'ai fais. Tout remplacer par des _