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

 MySQL Discussion :

Migration PHP 7.2, pb de requête INSERT [MySQL-5.7]


Sujet :

MySQL

  1. #1
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut Migration PHP 7.2, pb de requête INSERT
    Bonjour,

    Suite à une migration de PHP 5.6 vers PHP 7.2, la requête suivante ne fonctionne plus, impossible d'effectuer un Insert, j'ai regardé la documentation, tout semble correspondre, je ne comprends pas..., ça fait 2 jours que je suis entre autres choses dessus, j'ai aussi essayé d'isoler l'Insert et de passer tous les champs à "NULL", ça n'a rien donné... mais je persiste à penser que ça vient de la requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # Protection injections SQL
    $cmt_pseudo = mysqli_real_escape_string($class->db_connect, $_POST['pseudo']);
    $cmt_commentaire = mysqli_real_escape_string($class->db_connect, $_POST['commentaire']);
    mysqli_query($class->db_connect, "INSERT INTO commentaires (cmt_id, cmt_reference, cmt_date, cmt_pseudo, cmt_commentaire, cmt_validate) values ('', '$article_reference', '$date_time', '$cmt_pseudo', '$cmt_commentaire', '0')");
    		$last_id = mysqli_insert_id($class->db_connect); # Récupère le dernier id
    Auriez-vous s'il vous plait une idée du problème, mes tests de migration sont effectués en amont en localhost avec : Wamp 3.1.4/64bits, PHP 7.2, MySQL 5.7.23

    Merci d'avance pour vos réponses

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Je suppose que cmt_id est un identifiant de type entier auto-incrémenté ?
    Alors inutile de le mettre dans la requête et, surtout, lui donner en valeur une chaîne de caractères, fut-elle vide, est pour le moins... bizarre... pour rester poli !

    À part cette bizarrerie, qu'obtenez-vous comme message d'erreur ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    MySQL retourne certainement un message d'erreur qui pourrait te permettre d'identifier l'origine du problème.
    Tu pourrais aussi demander l'affichage de la requête telle qu'elle est exécutée. Cela pourrait aussi t'aider ans ta recherche.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut
    Merci pour vos réponses rapides,

    @CinePhil : Comme vous l'expliquez très bien, l'erreur venait effectivement de l'identifiant auto-incrémenté qui était déclaré et que j'ai donc supprimé. Au passage, je vous remercie pour cette correction de syntaxe que je traine surement depuis des années, PHP 7.2 semble apparemment syntaxiquement plus rigoureux.


  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    PHP 7.2 semble apparemment syntaxiquement plus rigoureux.
    En l'occurrence, il ne s'agissait pas d'une plus grande rigueur de PHP mais de MySQL. Il y a un paramètre pour demander à MySQL d'être moins rigoureux mais je ne sais plus lequel et il vaut mieux être rigoureux si on veut conserver une BDD cohérente.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut dominos.

    1) il n'est pas nécessaire de faire référence à votre colonne "cmt_id", dans l'insert, si celle-ci est du type auto incrémenté.
    Laissez MySql se débrouiller tout seul !

    2) je remarque que vous mettez partout des apostrophes.
    Si vous avez une chaînes de caractères, de type littérale, (je parle de ceci 'blablabla') cela est nécessaire.
    Dans le cas contraire, il est nécessaire d'encadrer votre chaîne par une apostrophe.
    Sous mysql, c'est l'apostrophe et sous php, c'est le guillemet. A ne pas confondre !

    Je constate que vous mettez aussi entre apostrophe sur le zéro.
    Est-ce que le type de la colonne cmt_validate est integer ou char() ?
    Si c'est de type numérique, ce n'est pas nécessaire.

    3) les concaténations des chaines se font à l'aide d'un point en php.

    4) ensuite la syntaxe de votre requête n'est pas, a priori, correcte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $req = "INSERT INTO `commentaires` (`cmt_reference`,`cmt_date`,`cmt_pseudo`,`cmt_commentaire`,`cmt_validate`) values
     ('".$article_reference."','".$date_time."','".$cmt_pseudo."','".$cmt_commentaire."',0)";
     
    mysqli_query($class->db_connect, $req);
    5) au lieu d'utiliser l'extension "mysqli", vous feriez mieux de passer à "php pdo".
    La gestion en serait plus simple à mettre en oeuvre !

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

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

Discussions similaires

  1. [MySQL] Requete INSERT PHP/SQL
    Par SNY77 dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 22/05/2012, 12h20
  2. ASP + pb requete Insert
    Par cell dans le forum ASP
    Réponses: 4
    Dernier message: 22/04/2005, 11h15
  3. petite aide sur une requete INSERT INTO
    Par bonneti dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/03/2005, 15h17
  4. 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
  5. effectuer une requete insert avec 'values' ET 'select'
    Par delaio dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/08/2004, 19h05

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