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
Auteur
Réponse acceptée

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

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)

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