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 :

Comprendre - Incorrect integer value: '' for column at row 1 [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 72
    Points : 45
    Points
    45
    Par défaut Comprendre - Incorrect integer value: '' for column at row 1
    Bonjour,

    Je souhaiterai comprendre pourquoi j'ai l'erreur "Incorrect integer value: '' for column at row 1" .

    J'ai réussît à résoudre le problème en modifiant le type de cette colone mais çà ne me convient pas.

    Je me suis basé sur cette doc pour définir les types de mes valeurs : icihttp://dev.mysql.com/doc/refman/5.0/...ric-types.html

    Mon problème est que quand je ne rentre pas de valeur, j'ai des erreurs. Cela vaut pour les types numérique en général. J'ai même le problème avec mes valeurs de type bit !

    Voici un exemple.
    Le code XHTML, ou l'utilisateur doit saisir sa valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <label>Surface en m²</label> : <input type="text" name="surface" maxlength="10" />
    Le code PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $surface = isset($_POST['surface'])  ? trim($_POST['surface']) : "";
    (Pour cette exemple, j'ai essayé de modifier le "" en '' mais cela ne fonctionne qu'en entrant une valeur)

    Dans MySQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Surface_Logemt smallint(5)
    Ce que je ne comprends pas, c'est que ce n'est pas la première table ou j'utilise les types numériques et çà fonctionne très bien ailleurs. Mon code est a priori le même... J'ai du faire une erreur mais où ?

    Merci d'avance pour vos réponses.


    Autre remarque et question :
    J'ai remarqué que j'avais des problèmes avec les colonnes où Unsigned était activé. Rencontrez vous aussi des problèmes ?

    J'ai lu sur les forums que mon erreur provenait du mode strict de MYSQL 5. Pourriez vous m'en dire plus car les info que j'ai trouvé sont plutôt faiblarde.

  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 : 61
    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 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Pour pouvoir te répondre, il faudrait avoir la requête réellement envoyée au serveur MySQL.
    Tu peux l'obtenir en faisant un echo de la requête avant le mysql_query.

  3. #3
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    Bonjour à tous,

    J'ai eu le soucis sur le serveur d'un client toutes les requêtes planté alors j'ai regardé les logs et j'avais la même erreurs.

    En fait le serveur n'autorise pas la saisie dans les requêtes d'insertion de valeur : "" ou '', car pour lui c'est incorrect et ne prend même pas la peine de mettre la valeur par défaut...

    Donc dans le cas d'une valeur auto-incrémenté je te conseil de mettre "0" ce qui à pour but d'auto-incrémenté ta valeur et de ne pas fâcher le serveur.

    Et si tu as aussi le soucis avec des champs en VARCHAR ou TEXT il faut aussi mettre une valeur...

    Si tu es maitre de ton serveur tu pourra changer la config pour corriger le problème en théorie bien sur

    Cordialement,

  4. #4
    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 : 61
    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 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Effectivement, pour les colonnes d'identifiant auto-incrémenté, ne pas mettre de valeur est à la fois le plus logique et ce qui posera le moins de problème.

    De plus, en relisant le message d'origine de cette discussion, je vois que tu attribues une valeur textuelle à une $surface.
    A moins que les valeurs entrées contiennent l'unité de mesure (m², are, hectare...), une surface est une valeur numérique donc je ferais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $surface = isset($_POST['surface'])  ? intval(trim($_POST['surface'])) : 0;
    Ou plutôt, si la valeur par défaut de la colonne accueillant la surface est NULL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $surface = isset($_POST['surface'])  ? intval(trim($_POST['surface'])) : NULL;

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 72
    Points : 45
    Points
    45
    Par défaut
    Ok Merci pour les infos. Je comprends maintenant pourquoi çà ne fonctionnait pas.

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

Discussions similaires

  1. Problème Java/SQL : Incorrect integer value
    Par phantomatiik dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 22/03/2012, 14h44
  2. Réponses: 0
    Dernier message: 17/06/2011, 12h46
  3. [MySQL] Incorrect string value: '\xE9sireu...' for column
    Par ETVigan dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 15/07/2010, 13h36
  4. Réponses: 1
    Dernier message: 25/08/2006, 07h57
  5. Réponses: 16
    Dernier message: 12/01/2006, 16h14

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