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 :

[Résolu] INSERT INTO impossible [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    amateur passionné
    Inscrit en
    Février 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur passionné

    Informations forums :
    Inscription : Février 2018
    Messages : 20
    Par défaut [Résolu] INSERT INTO impossible
    Bonjour à tous

    je suis passé de php5 à PHP7, depuis j'ai réussi a modifier mes pages pour afficher les données de ma bdd, mais impossible d'y écrire.
    j'ai lu et essayé plein de choses, mais toujours impossible d'écrire dans mes tables.
    Tout mes essais se font en local.
    j'ai modifié mes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("INSERT INTO
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_query("INSERT INTO
    ou en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $link->query("INSERT INTO
    et encore plein d'autres possibilités, mais rien n'y fait
    auriez vous une solution ,
    merci d'avance

    [edit]
    le code ci-dessous,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $link->query("INSERT INTO
    ne fonctionne pas en local, pourtant il fonctionne chez mon hébergeur, pourquoi mystère.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 30
    Par défaut
    Bonjour,

    Il pourrait être utile de nous donner quelques éléments supplémentaires.

    Tu as essayé d'afficher l'erreur par exemple ?

    Il doit forcément y en avoir une si l'insertion ne fonctionne pas.

    Tu dis qu'il y a une différence de résultat entre tes tests locaux et ceux chez ton hébergeur, quelle différence y-a-t-il au niveau de la version de PHP entre les deux ?

    Et d'où sort ton $link ? Il s'agit d'un objet PDO ?

  3. #3
    Membre averti
    Homme Profil pro
    amateur passionné
    Inscrit en
    Février 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur passionné

    Informations forums :
    Inscription : Février 2018
    Messages : 20
    Par défaut
    bonjour alfanor
    Tu as essayé d'afficher l'erreur par exemple ?
    non je n'ai rien trouvé, a ce sujet a part l'erreur de connexion, de plus php 7 est tout neuf pour moi.

    Il doit forcément y en avoir une si l'insertion ne fonctionne pas.
    obligatoirement, mais je cherche depuis ce matin sans succés.

    elle différence y-a-t-il au niveau de la version de PHP entre les deux ?
    en local PHP Version 7.0.25-0ubuntu0.16.04.1
    en ligne PHP Version 7.0.27

    Et d'où sort ton $link ? Il s'agit d'un objet PDO ?
    je savait pas, mais je peux le remplacer par autre chose du genre $connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $link = mysqli_connect($host,$user,$mdp,$bdd); //connection serveur

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 30
    Par défaut
    Il te faut donc commencer par regarder comment afficher l'erreur, tu as regardé ça par exemple ?

    http://php.net/manual/fr/mysqli.error.php

    Après, est-ce que tu as testé ta requête SQL directement via PHPMyAdmin ? Ceci afin d'exclure le fait que ce soit une mise à jour du côté de la base de données qui entraîne la non exécution de la requête.

  5. #5
    Membre averti
    Homme Profil pro
    amateur passionné
    Inscrit en
    Février 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur passionné

    Informations forums :
    Inscription : Février 2018
    Messages : 20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (!mysqli_query($con, "SET a=1")) {printf("Message d'erreur : %s\n", mysqli_error($con));}
    placé en début de page me donne
    Message d'erreur : Unknown system variable 'a'
    Après, est-ce que tu as testé ta requête SQL
    non, peux tu expliqué un peu plus, suis pas certain d'avoir compris.
    en lecture ça fonctionne, j'arrive a afficher mes données.

    par contre bizarrement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $con->query("UPDATE xxxxxx SET code='$code' WHERE id='$id'");
    fonctionne parfaitement

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 30
    Par défaut
    Euh...

    Tu te doutes bien que lorsque je te demande d'utiliser mysqli_error() ce n'est pas pour copier le code de la doc mais pour l'utiliser lorsque tu tentes un INSERT dont tu dis qu'il ne fonctionne pas

    T'expliquer ? Comment faire une requête dans PHPMyAdmin ?

  7. #7
    Membre averti
    Homme Profil pro
    amateur passionné
    Inscrit en
    Février 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur passionné

    Informations forums :
    Inscription : Février 2018
    Messages : 20
    Par défaut
    pour mysqli_error(), j'ai vais relire la doc et essayé de comprendre.

    pour la requête directement dans phpmyadmin, cela veux dire que je ouvrir phpmyadmin, choisir ma table, onglet sql et y mettre ma requête, c'est bien cela ?

    je suis un débutant

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 30
    Par défaut
    Règle d'or pour un débutant, tout tester, au pire ça casse tout, on s'en fou, les débutants ne gèrent pas de systèmes critiques en théorie ^^

    Et concrètement un non débutant doit aussi tout tester, sauf qu'il sait avoir un environnement hors production pour le faire

    Là par exemple au lieu de me demander où c'est dans PHPMyAdmin, tu aurais pu tester ta théorie et voir que c'est effectivement ça et ainsi me donner le résultat directement.

    Pour mysqli_error(), il te suffit de garder la syntaxe que tu as copié / collé mais de mettre ta requête à la place du !mysqli_query($con, "SET a=1").

  9. #9
    Membre averti
    Homme Profil pro
    amateur passionné
    Inscrit en
    Février 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur passionné

    Informations forums :
    Inscription : Février 2018
    Messages : 20
    Par défaut
    pour la requête directement dans phpmyadmin, ça passe sans soucis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ($con->query("INSERT into evenement (id,prenom,nom,date,evenement,mailo,message) VALUES('', '" . $prenom . "', '" . $nom . "', CURDATE(), '" . $evenement . "', '" . $mailo . "', '" . $message . "')"));
    {
    printf("Message d'erreur : %s\n", mysqli_error($con));
    }
    me donne une page toute blanche, rien ne s'affiche.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 30
    Par défaut
    Là tu affiches l'erreur en cas de succès de l'exécution de la requête

    Il faut mettre le "!" de la négation donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    if (!$con->query...)
    ?>

  11. #11
    Membre averti
    Homme Profil pro
    amateur passionné
    Inscrit en
    Février 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur passionné

    Informations forums :
    Inscription : Février 2018
    Messages : 20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (!$con->query("INSERT INTO evenement (id,prenom,nom,date,evenement,mailo,message) VALUES('', '" . $prenom . "', '" . $nom . "', CURDATE(), '" . $evenement . "', '" . $mailo . "', '" . $message . "')"));
    	{
    	printf("Message d'erreur : %s\n", mysqli_error($con)); 
    	}
    rien ne se passe, la page est rechargée et aucun message d'erreur ne s'affiche.

    par contre UPDATE marche impeccable
    comment cela est il possible ?

    [Édit]
    J'ai réduis ma page un maximum.
    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
    $nom="Durant";
    $prenom="Pierre";
    $num="321";
    $rue="machin";
    $code="7864";
    $localite="Brugges";
    $gsm="0487111111";
    $tel="054112233";
    $pwd="passe";
    $adresse_mail="mail@sfr.fr";
    $affil="12345";
    $val="1";
     
    if (1 > 2) 
    	{	
    	echo "Les données vont être enregistrées";				
    	$con->query("insert into yves2 VALUES('', '".$nom."', '".$prenom."', '".$num."', '".$rue."', '".$code."', '".$localite."', '".$gsm."', '".$tel."', '".$pwd_sha1."', '".$adresse_mail."', '".$affil."', '".$val."')") or die(mysqli_error());   
    	echo "<b>Les données sont enregsitrées</b>";			
    		}
    		else 
    		{
    		echo"Les donnée ne sont pas étaient enregistrées.";						
    		}
    suivant la condition, j'arrive a afficher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Les données vont être enregistrées 
    ou alors
    Les donnée ne sont pas étaient enregistrées
    mais cela n'enregistre jamais les données dans la table et le deuxième "echo"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <b>Les données sont enregsitrées</b>
    ne s'affiche jamais, le script bloque a la réquète

  12. #12
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Si tu veux vraiment aller à l'essentiel, supprime ta condition et teste uniquement le résultat de la requête :
    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
    error_reporting(E_ALL);
     
    $nom = "Durant";
    $prenom = "Pierre";
    $num = "321";
    $rue = "machin";
    $code = "7864";
    $localite = "Brugges";
    $gsm = "0487111111";
    $tel = "054112233";
    $pwd = "passe";
    $adresse_mail = "mail@sfr.fr";
    $affil = "12345";
    $val = "1";
     
    $sql = "insert into yves2 VALUES('', '" . $nom . "', '" . $prenom . "', '" . $num . "', '" . $rue . "', '" . $code . "', '" . $localite . "', '" . $gsm . "', '" . $tel . "', '" . $pwd_sha1 . "', '" . $adresse_mail . "', '" . $affil . "', '" . $val . "')";
    $result = $con->query($sql);
    if ($result !== false) {
    	echo "<b>Les données sont enregsitrées</b>";
    } else {
    	echo 'Erreur !<br>';
    	echo 'Requête : "'.$sql.'"<br>';
    	echo 'Erreur : '.$con->error.'<br>';
    	die;
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  13. #13
    Membre averti
    Homme Profil pro
    amateur passionné
    Inscrit en
    Février 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur passionné

    Informations forums :
    Inscription : Février 2018
    Messages : 20
    Par défaut
    merci Celira de t'intéresser a mon problème

    voici le résultat
    Erreur !
    Requête : "insert into yves2 VALUES('', 'Durant', 'Pierre', '321', 'machin', '7864', 'Brugges', '0487111111', '054112233', '', 'mail@sfr.fr', '12345', '1')"
    Erreur : Incorrect integer value: '' for column 'id' at row 1
    voici la configuration de l'id de ma table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1 	id       rimaireIndex 	int(3) 		Non 	Aucune 	AUTO_INCREMENT
    et elle est désignée "primaire".

    ok, le problème vient de Auto-incrémentation de l'id, si je donne un numéro d'id cela marche, je laisse le champ vide ça passe pas.
    que dois-je faire pour régler ce problème ?

  14. #14
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    remplace VALUES('', '" par VALUES(NULL, '"

  15. #15
    Membre averti
    Homme Profil pro
    amateur passionné
    Inscrit en
    Février 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur passionné

    Informations forums :
    Inscription : Février 2018
    Messages : 20
    Par défaut
    Bonjour Rawsrc

    grand merci,
    cela fonctionne correctement.

    encore un très grand merci a vous tous pour votre dévouement.

    [Édité]
    cela ne fonctionnait pas encore aussi bien que je l'aurais voulu.
    la bonne solution est de ne pas renseigné la colonne "ID" dans "INSERT INTO" comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $con->query("INSERT INTO yves2 (nom,prenom,num,rue,...........) VALUES('".$nom."', '".$prenom."', '".$num."', '".$rue."', ..................................."')");
    mais attention la table n'accepte pas les champs vides, si une des variables ne contient rien, cela ne quand même pas

  16. #16
    Membre averti
    Homme Profil pro
    amateur passionné
    Inscrit en
    Février 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur passionné

    Informations forums :
    Inscription : Février 2018
    Messages : 20
    Par défaut
    Bonjour Rawsrc

    grand merci,
    cela fonctionne correctement.

    encore un très grand merci a vous tous pour votre dévouement.

    [Édité]
    cela ne fonctionnait pas encore aussi bien que je l'aurais voulu.
    la bonne solution est de ne pas renseigné la colonne "ID" dans "INSERT INTO" comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $con->query("INSERT INTO yves2 (nom,prenom,num,rue,...........) VALUES('".$nom."', '".$prenom."', '".$num."', '".$rue."', ..................................."')");
    mais attention la table n'accepte pas les champs vides, si une des variables ne contient rien, cela ne fonctionne quand même pas, enfin dans mon cas

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/10/2006, 14h28
  2. Réponses: 8
    Dernier message: 26/07/2006, 14h50
  3. Réponses: 2
    Dernier message: 21/07/2005, 14h20
  4. erreur SQL ...INSERT INTO
    Par naidinp dans le forum ASP
    Réponses: 20
    Dernier message: 18/09/2003, 11h38
  5. Insert Into + Date
    Par BoeufBrocoli dans le forum SQL
    Réponses: 10
    Dernier message: 13/08/2003, 11h23

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