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 mySQL avec PHP [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 115
    Par défaut Erreur mySQL avec PHP
    Bonjour à tous,

    Aujourd'hui j'ai mis en prod un petit CMS développé par mes soins sur un II6/mySQL 5.x/php 5.2.x. Je travaille avec le framework Codeigniter. Mon niveau d'erreur est défini à E_ALL.

    J'ai été surpris de voir que PHP me retournait des erreurs en provenance de mySQL sur les types de champs mySQL alors que je ne les avaient dans ma config de développement (LAMP chez ovh).

    Je m'explique :

    Par exemple,

    j'ai un champ "ordre" INT(2) et lorsque que j'envoie une chaîne vide lors d'un INSERT, PHP m'affiche une erreur comme quoi mySQL attends un entier et non pas une chaîne. (Ce que y plutôt normal en fin de compte). Alors que dans mon environnement de développement je n'ai aucune alerte de ce type.

    Ce que je cherche à comprendre, c'est quelle est la différence de configuration php ou mySQL qui conduit à ces deux comportements différents.

    Bref je voudrais savoir comment afficher systématiquement ces alertes/erreurs afin d'être plus vigilant quant à la définition et au typage des mes champs.

    Merci d'avance.

  2. #2
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    montre nous le message d'erreur entier

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 115
    Par défaut
    je n'ai plus accès au message d'erreur car la machine de prod est dans un extranet...

    Mais ce que disait le message php en substance était quelques chose de la sorte :

    "Le type fournit pour le champ 'ordre' est incorrect, j'attends un entier"

    J'ai dejà vu ce type d'alerte dans phpMyAdmin mais je n'avais encore jamais vu php me retourner ce genre de message lors des INSERT ou des UPDATE.

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Bonjour,

    Il y a clairement une différence de config entre les 2 environnements. Dans le fichier php.ini il y a cette clause qui est peut-être activée chez ton hébergeur en PROD :

    ; Trace mode. When trace_mode is active (=On), warnings for table/index scans and
    ; SQL-Errors will be displayed.
    ; http://php.net/mysql.trace-mode
    mysql.trace_mode = Off

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 115
    Par défaut
    Citation Envoyé par pc.bertineau Voir le message
    Bonjour,Il y a clairement une différence de config entre les 2 environnements.
    Merci pour ton coup de pouce !

    C'est effectivement ce que je pense, mais il semble, selon le phpinfo qu'on m'avait transmis, que cette option est bien en 'off'.

    Y-aurait t il un autre paramètre de config qui pourrait expliquer cet affichage d'erreurs ?

    [EDIT]
    J'ai mis mysql.trace_mode à 'On' dans ma config de dév et je n'ai pas les erreurs que j'ai vu en prod...

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Alors peut-être regarder du côté de la conf MySql (my.cnf) : niveau de log différent notamment entre ta prod et ovh..

  7. #7
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 115
    Par défaut
    Citation Envoyé par pc.bertineau Voir le message
    Alors peut-être regarder du côté de la conf MySql (my.cnf) : niveau de log différent notamment entre ta prod et ovh..
    je suis en train d'éplucher les variables mySQL pour voir ce qui pourrait expliquer un différence de comportement de la sorte.

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    tu serais pas en mode strict, apres c'est a toi de bien formater les valeurs aussi,
    c'est par exemple : WHERE id = 14 et pas WHERE id = '14'
    si ton champs est du type int

  9. #9
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 115
    Par défaut
    tu serais pas en mode strict
    comme dit plus haut je suis en E_ALL

    apres c'est a toi de bien formater les valeurs aussi,
    On est bien d'accord, mais l'idée c'est d'avoir en config de dév un maximum d'alertes afin de me sensibiliser à certaine config de champ un peu "laxiste".

    j'ai vu une différence dans la conf, mais je doute que ca soit ca :

    dans le dev :
    display_errors STDOUT

    et dans la prod :
    display_errors On

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Al3x Voir le message
    comme dit plus haut je suis en E_ALL



    On est bien d'accord, mais l'idée c'est d'avoir en config de dév un maximum d'alertes afin de me sensibiliser à certaine config de champ un peu "laxiste".

    j'ai vu une différence dans la conf, mais je doute que ca soit ca :

    dans le dev :
    display_errors STDOUT

    et dans la prod :
    display_errors On
    je parle du mode strict de mysql pas de celui de PHP

  11. #11
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 115
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    je parle du mode strict de mysql pas de celui de PHP
    oops :-)

    Ca me semble pas mal du tout comme piste ca !! je vais investiguer dans ce sens...

  12. #12
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 115
    Par défaut
    Bingo !

    Merci stealth35, le mode SQL était bien : STRICT_TRANS_TABLES !

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

Discussions similaires

  1. unexpected character : erreur à l'exécution d'une requête MySQL avec PHP
    Par sub_zero dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 02/02/2015, 18h22
  2. [MySQL] Gérer erreur MySQL avec PHP
    Par saad.hessane dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/09/2008, 13h19
  3. Réponses: 1
    Dernier message: 31/01/2007, 11h59
  4. Réponses: 1
    Dernier message: 28/04/2006, 16h17
  5. Importation d'un fichier xml vers une BD mysql avec php
    Par naima2005 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 28/04/2006, 15h23

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