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

Langage PHP Discussion :

PDO: Mon enregistrement en base de données ne s'effectue pas


Sujet :

Langage PHP

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

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 602
    Points : 818
    Points
    818
    Par défaut PDO: Mon enregistrement en base de données ne s'effectue pas
    Bonjour,
    J'ai la structure de table suivante:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET AUTOCOMMIT = 0;
    START TRANSACTION;
    SET time_zone = "+00:00";
     
    CREATE TABLE IF NOT EXISTS `dat_summaries` (
      `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
      `id_customer` int(10) UNSIGNED NOT NULL,
      `id_filter` int(10) UNSIGNED DEFAULT NULL,
      `id_salesagent` int(10) UNSIGNED DEFAULT NULL,
      `contacttype` tinyint(2) DEFAULT NULL,
      `date_contact` date DEFAULT NULL,
      `content` text,
      `create_date` datetime DEFAULT CURRENT_TIMESTAMP,
      `update_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`),
      KEY `id_customer` (`id_customer`) USING BTREE,
      KEY `id_filter` (`id_filter`) USING BTREE,
      KEY `dat_summaries_ibfk_2` (`id_salesagent`)
    ) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8;
     
    ALTER TABLE `dat_summaries`
      ADD CONSTRAINT `dat_summaries_ibfk_1` FOREIGN KEY (`id_customer`) REFERENCES `dat_customers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
      ADD CONSTRAINT `dat_summaries_ibfk_2` FOREIGN KEY (`id_salesagent`) REFERENCES `lst_salesagents` (`id`) ON UPDATE CASCADE,
      ADD CONSTRAINT `dat_summaries_ibfk_3` FOREIGN KEY (`id_filter`) REFERENCES `lst_filters` (`id`) ON UPDATE CASCADE;
    COMMIT;
    et la requête suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT IGNORE INTO dat_summaries (content,date_contact,contacttype,id_salesagent,id_customer)
    		VALUES(:content,:date_contact,:contacttype,:id_salesagent,:id_customer)
    et les paramètres d'exécution suivants:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    array
      ':content' => string 'essai' (length=5)
      ':date_contact' => string '2020-12-10' (length=10)
      ':contacttype' => string '3' (length=1)
      ':id_salesagent' => string '' (length=0)
      ':id_customer' => int 3008
    Sachant que seul l'id est unique et auto-incrémenté (clef primaire), je ne comprends pas pourquoi l'enregistrement ne se fait pas.

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 438
    Points : 4 936
    Points
    4 936
    Par défaut
    Bonjour,

    Il me semble que c'est la valeur de "date_contact" qui empêche l'insertion.

    Si c'est PDO, tu peux récupérer le message d'erreur mais sans "IGNORE".

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

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 602
    Points : 818
    Points
    818
    Par défaut
    Comme indiqué dans le titre, j'utilise PDO. Je ne vois pas pourquoi date_contact poserait un problème. Qu'est-ce qui te fait penser que cette date empêcherait l'enregistrement. J'enregistre régulièrement des dates à ce format.

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

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 602
    Points : 818
    Points
    818
    Par défaut
    J'ai essayé de rentrer ma requête dans phpMyAdmin en insérant les valeurs de mon tableau de paramètres d'exécution et j'obtiens deux erreurs:
    Warning: #1366 Incorrect integer value: '' for column 'id_salesagent' at row 1
    Warning: #1452 Cannot add or update a child row: a foreign key constraint fails (`sirep`.`dat_summaries`, CONSTRAINT `dat_summaries_ibfk_2` FOREIGN KEY (`id_salesagent`) REFERENCES `lst_salesagents` (`id`) ON UPDATE CASCADE)
    Dans l'après-midi, je regarderai la première erreur (qui m'oblige à reprendre une partie de mon code) et avec un peu de chance, la deuxième pourrait être résolue du même coup.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/07/2007, 19h58
  2. [MySQL] Enregistrement en base de données
    Par salirose dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 09/09/2006, 00h42
  3. Insérer Enregistrement dans Base de données
    Par TurricanII dans le forum JBuilder
    Réponses: 3
    Dernier message: 30/05/2006, 12h59
  4. nbre enregistrements dans base de données
    Par Chonchon dans le forum JDBC
    Réponses: 3
    Dernier message: 09/01/2006, 20h54

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