IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

PDO: Erreur: Invalid parameter number: parameter was not defined


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut PDO: Erreur: Invalid parameter number: parameter was not defined
    Bonjour,
    Je comprends le message d'erreur mais je ne trouve pas où elle est.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function insertBook(array $data): false|string
    {
    	$db = dbConnect();
    	extract($data);
    	var_dump($data);
     
    	$sql = <<<SQL
    INSERT IGNORE INTO dat_books
    (title, id_author, id_publisher, id_theme, id_public, id_place, format, comment)
    VALUES(:title, :author, :publisher, :theme, :public, :place, :format, :comment) 
     
    SQL;
    	$params = [':title'=>$title, ':author'=>$author, ':publisher'=>$publisher, ':theme'=>$theme, ':public'=>$public, ':place'=>$place, ':format'=>$format, 'comment:'=>$comment, ];
    	$stmt = $db->prepare($sql);
    	$stmt->execute($params);
    	return $db->lastInsertId();
    }
    Le var_dump() de la ligne 5 donne:
    array (size=8)
      'title' => string 'Coucou' (length=6)
      'author' => string '1' (length=1)
      'publisher' => string '1' (length=1)
      'theme' => string '' (length=0)
      'public' => string '' (length=0)
      'place' => string '' (length=0)
      'format' => string '' (length=0)
      'comment' => string '' (length=0)
    
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    CREATE TABLE IF NOT EXISTS `dat_books` (
      `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
      `title` varchar(50) NOT NULL,
      `id_author` int(10) UNSIGNED DEFAULT NULL,
      `id_publisher` int(10) UNSIGNED DEFAULT NULL,
      `id_place` int(10) UNSIGNED DEFAULT NULL,
      `id_public` int(10) UNSIGNED DEFAULT NULL,
      `id_theme` int(10) UNSIGNED DEFAULT NULL,
      `format` varchar(30) DEFAULT NULL,
      `comment` text NOT NULL,
      `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`),
      KEY `id_auteur` (`id_author`),
      KEY `id_editeur` (`id_publisher`),
      KEY `id_place` (`id_place`),
      KEY `id_theme` (`id_theme`),
      KEY `id_public` (`id_public`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  2. #2
    Membre chevronné
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2023
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2023
    Messages : 387
    Par défaut
    'comment:'=>$comment ou ':comment'=>$comment ?

  3. #3
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 988
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 988
    Par défaut
    À noter que les deux-points sont facultatifs dans le tableau associatif.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    Ouh lala! Merci!!

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 594
    Billets dans le blog
    10
    Par défaut
    Votre table comporte 5 identifiants en plus de celui qui sert de clef primaire, or, aucun d'entre eux ne fait référence à une clef primaire d'une autre table et chacun d'entre eux est nullable...

    En d'autres termes, vous pouvez insérer n'importe quoi dans votre base de données, aucune intégrité n'est vérifiée
    À revoir d'urgence, car vous allez avoir de gros soucis.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/05/2015, 19h47
  2. Réponses: 7
    Dernier message: 08/04/2015, 10h16
  3. Invalid parameter number: parameter was not defined
    Par bizebi dans le forum Langage
    Réponses: 3
    Dernier message: 24/11/2013, 19h47
  4. [PDO] Invalid parameter number: parameter was not defined
    Par Xeuch dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/03/2013, 18h06
  5. Réponses: 6
    Dernier message: 03/06/2010, 10h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo