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 :

Erreur SQLSTATE[HY093] introuvable


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 687
    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 687
    Points : 853
    Points
    853
    Par défaut Erreur SQLSTATE[HY093] introuvable
    Bonjour et meilleurs vœux à tous.
    J'ai la fonction suivante:
    Code : 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
    function insertMarriage(array $data): string|false {
    	$db = dbConnect();
     
    	$sql = <<<SQL
    	INSERT IGNORE INTO dat_marriages
    	(id_m, id_f, marriageyear, marriagemonth, marriageday, marriageplace,
    		divorceyear, divorcemonth, divorceday, divorceplace,
    		marriage_order_m, marriage_order_f)
    	VALUES(:id_m, :id_f, :marriageyear, :marriagemonth, :marriageday, :marriageplace,
    		:divorceyear, :divorcemonth, :divorceday, :divorceplace,
    		:marriage_order_m, :marriage_order_f)
    	SQL;
    	$stmt = $db->prepare($sql);
    	$stmt->execute($data);
    	return $db->lastInsertId();
    }
    avec la structure de table suivante:
    Code : 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
    19
    20
    21
    22
    23
    24
    25
    CREATE TABLE IF NOT EXISTS `dat_marriages` (
      `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'marriagekey',
      `id_m` int(10) UNSIGNED NOT NULL COMMENT 'man''s key',
      `id_f` int(10) UNSIGNED NOT NULL COMMENT 'woman''s key',
      `marriageyear` char(4) DEFAULT NULL,
      `marriagemonth` char(2) DEFAULT NULL,
      `marriageday` char(2) DEFAULT NULL,
      `marriageplace` char(40) DEFAULT NULL,
      `divorceyear` char(4) DEFAULT NULL,
      `divorcemonth` char(2) DEFAULT NULL,
      `divorceday` char(2) DEFAULT NULL,
      `divorceplace` varchar(40) DEFAULT NULL,
      `marriage_order_m` tinyint(2) DEFAULT NULL COMMENT 'lit M',
      `marriage_order_f` tinyint(2) DEFAULT NULL COMMENT 'lit F',
      `create_date` datetime DEFAULT CURRENT_TIMESTAMP,
      `update_date` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`),
      UNIQUE KEY `clefsCjts` (`id_m`,`id_f`),
      KEY `clefM` (`id_m`),
      KEY `clefF` (`id_f`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
     
    ALTER TABLE `dat_marriages`
      ADD CONSTRAINT `dat_marriages_ibfk_1` FOREIGN KEY (`id_f`) REFERENCES `dat_persons` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
      ADD CONSTRAINT `dat_marriages_ibfk_2` FOREIGN KEY (`id_m`) REFERENCES `dat_persons` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
    Qui me retourne l'erreur suivante:
    ( ! ) Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp64\www\proginet\appGenealium\model\model.php on line 315
    ( ! ) PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp64\www\proginet\appGenealium\model\model.php on line 315
    Call Stack
    #	Time	Memory	Function	Location
    1	0.0023	378520	{main}( )	...\formHandler.php:0
    2	0.0085	400360	insertMarriage( $data = ['man' => '1613', 'woman' => '238', 'marriageday' => NULL, 'marriagemonth' => NULL, 'marriageyear' => NULL, 'marriageplace' => 'Strasbourg', 'divorceday' => NULL, 'divorcemonth' => NULL, 'divorceyear' => NULL, 'divorceplace' => NULL, 'marriage_order_m' => NULL, 'marriage_order_f' => NULL] )	...\formHandler.php:219
    3	0.0233	447232	execute( $params = ['man' => '1613', 'woman' => '238', 'marriageday' => NULL, 'marriagemonth' => NULL, 'marriageyear' => NULL, 'marriageplace' => 'Strasbourg', 'divorceday' => NULL, 'divorcemonth' => NULL, 'divorceyear' => NULL, 'divorceplace' => NULL, 'marriage_order_m' => NULL, 'marriage_order_f' => NULL] )	...\model.php:315
    J'ai tout vérifié: le contenu des deux tableaux du message d'erreur que j'ai comparé avec la structure de la table et je ne vois pas d'erreur. Est-ce que quelqu'un y verrait plus clair que moi?

  2. #2
    Membre éclairé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    390
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 390
    Points : 787
    Points
    787
    Par défaut
    Bonjour,

    L'exécution de la requête préparée requiert un tableau de données avec les 12 clés suivantes (avec ou sans les ":") : :id_m, :id_f, :marriageyear, :marriagemonth, :marriageday, :marriageplace, :divorceyear, :divorcemonth, :divorceday, :divorceplace, :marriage_order_m, :marriage_order_f

    Or les clés de ton tableau $data ne correspondent pas aux marqueurs indiquées dans la requête préparée (man != id_m).

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 687
    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 687
    Points : 853
    Points
    853
    Par défaut
    Mille mercis!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/12/2022, 18h56
  2. [MySQL-5.7] Erreur SQLSTATE [HY093]
    Par jean-simon dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/10/2021, 11h52
  3. [PDO] Erreur 'SQLSTATE[HY093]' lors d'opérations sur $bdd
    Par captainchristian dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/04/2018, 10h49
  4. Erreur : SQLSTATE[HY093]: Invalid parameter number
    Par antoinv10 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/06/2015, 16h39
  5. Réponses: 2
    Dernier message: 30/05/2015, 20h47

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