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 :

Requete INSERT INTO qui aboutit mais ne modifie pas la BDD


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Eternel étudiant
    Inscrit en
    Octobre 2019
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Eternel étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 34
    Par défaut Requete INSERT INTO qui aboutit mais ne modifie pas la BDD
    Bonjour,

    Je me résigne à faire appel à vous car ne trouve pas la solution à mon problème.

    Voici la situation :
    J'ai un formulaire html avec 13 champs texte et 3 inputs de document.

    Tout le traitement des infos se passent bien y compris l'enregistrement des documents dans le dossier sur le serveur sauf que ma requête n'aboutit à rien dans ma base de données.

    Pour ma requête : j'ai préparé 3 variables ($sql_insert = [], $sql_values = [], $sql_params = []) pour n'importer que les données des champs saisis.
    Pour chacun des champs et input, je récupère bien mes infos.
    Elles sont construites sur ce modèle (je ne vous les mets pas toutes, elles sont construites de la même façon) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (!empty($status) && (isset($status)))
                {
                    $sql_insert [] = "status";
                    $sql_values [] = ":status";
                    $sql_params [':status'] = [$status];
                }
    Tout est concaténé et traité ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $insert_datas = !empty($sql_insert) ? implode(", ", $sql_insert) : "";
     
    $values_datas = !empty($sql_values) ? implode(", ", $sql_values) : "";
     
    $req = "INSERT INTO workshop (". $insert_datas . ") VALUES (". $values_datas . ");";
     
    $createNewWorkshop = $bdd->prepare($req);
     
    $createNewWorkshop->execute($sql_params);
    Mes var_dump() me renvoient des données cohérentes avec celles saisies : var_dump($createNewWorkshop);
    object(PDOStatement)#3 (1) { ["queryString"]=> string(195) "INSERT INTO workshop (name, project, where, flyer_recto, flyer_verso, loadable_presentation, status) VALUES (:name, :project, :where, :flyer_recto, :flyer_verso, :loadable_presentation, :status);" }
    var_dump($sql_params);
    array(7) { [":name"]=> array(1) { [0]=> string(6) "Yes !!" } [":project"]=> array(1) { [0]=> string(6) "Yes !!" } [":where"]=> array(1) { [0]=> string(6) "Yes !!" } [":flyer_recto"]=> array(1) { [0]=> string(27) "underwater-3204852_1280.jpg" } [":flyer_verso"]=> array(1) { [0]=> string(11) "unnamed.jpg" } [":loadable_presentation"]=> array(1) { [0]=> string(18) "Présentation1.pdf" } [":status"]=> array(1) { [0]=> string(7) "Archive" } }
    Le lien avec BDD fonctionne car j'ai fais une vérification de doublon en amont et tout se passe bien.
    Les fichiers sélectionnés passent bien sur le serveur et dans les bons dossiers et toutes les vérifications et poids et de formats se passent bien.

    Sauf qu'effectivement, rien de ne se passe sur la BDD : c'est comme si mes $sql_params du execute() n'étaient pas interprétés oO.
    Et, bien sûr, aucune erreur n'est renvoyée. oO

    Je suis preneur pour un conseil ou une coup de main.
    Merci d'avance et bonne journée,

  2. #2
    Membre très actif
    Avatar de JPBruneau
    Homme Profil pro
    retraité
    Inscrit en
    Août 2019
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2019
    Messages : 248
    Par défaut
    En fait c'est ta méthode qui consiste à vouloir mettre cette espèce de variable dans un champ de ta table
    par exemple c'est quoi ce PDF qu'il à l’air de ne pas aimer.
    C'est un avis perso, mais sépares tes objets,
    Peux tu me donner la structure exact de ta table.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    "where" est un mot réservé en SQL.
    Ce n'est pas recommandé de l'utiliser comme nom de colonne.
    (ça vaut aussi pour "date")

  4. #4
    Membre averti
    Homme Profil pro
    Eternel étudiant
    Inscrit en
    Octobre 2019
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Eternel étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 34
    Par défaut
    Bonjour Messieurs,

    Merci pour vos retours et vos expertises.

    Je regarde cela plus en détail dans la journée.

    Bonne journée,

  5. #5
    Membre averti
    Homme Profil pro
    Eternel étudiant
    Inscrit en
    Octobre 2019
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Eternel étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 34
    Par défaut
    Re-Bonjour,

    Problème résolu ! Merci encore.

    Après correction du 'where', j'ai surtout fait un extract() de mon tableau de paramètres avant execute().

    Belle fin de journée et encore merci !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    extract() est une TRÈS MAUVAISE idée / habitude...
    Avertissement
    N'utilisez pas extract() sur des données non sûres comme les entrées utilisateur (ex. $_GET, $_FILES).

  7. #7
    Membre averti
    Homme Profil pro
    Eternel étudiant
    Inscrit en
    Octobre 2019
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Eternel étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 34
    Par défaut
    Merci pour l'info !

    Effectivement, je n'avais pas connaissance de cette 'petite' mise en garde.

    Est-ce si problématique que cela sachant que je ne traite pas directement les données qui viennent de $_FILES et $_POST et que tout passe par des variables afin que tout soit vérifié, traité, transformé et concaténé ?
    Et que puis-je utiliser sinon ?

    Merci encore

  8. #8
    Membre averti
    Homme Profil pro
    Eternel étudiant
    Inscrit en
    Octobre 2019
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Eternel étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 34
    Par défaut
    Bonjour,

    En fait, j'ai concaténé mes variable différemment et ai supprimé le extract() !

    Merci encore et bon dimanche !!!

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

Discussions similaires

  1. requete insert into qui ne fonctionne pas
    Par olivier252 dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 05/01/2020, 13h00
  2. [AC-2010] Requete Insert vba qui s'execute mais ne fonctionne pas
    Par meud007 dans le forum VBA Access
    Réponses: 1
    Dernier message: 11/10/2015, 17h57
  3. [AC-2007] Requete INSERT INTO qui écrase mes enregistrements
    Par Azomix dans le forum VBA Access
    Réponses: 4
    Dernier message: 30/01/2012, 19h15
  4. [MySQL] INSERT INTO qui ne fonctionne pas mais qui fonctionne
    Par quiky dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 09/12/2009, 15h31
  5. Erreur lors d'une requete insert into.. select
    Par Mr N. dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 04/11/2004, 17h32

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