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 A non-numeric


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 382
    Points : 161
    Points
    161
    Par défaut Erreur A non-numeric
    Bonjour,
    j'ai cette erreur de temps en temps dans les logs

    voici la partie du script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(is_numeric($visiteur)==true && $visiteur>0) 
    	{	
    	 $sql = 'UPDATE record SET visiteur = "'.$visiteur.'" WHERE id = "1"';		
     	 mysqli_query($base_gene,$sql)or die ('Erreur UPDATE record SET visiteur'.$sql.'<br>'.mysqli_error($base_gene)); 
            }
    Je ne comprend pas comment je peux avoir cette erreur

    Merci
    75 ans quelques dents en moins, mais toujours envie d'apprendre

  2. #2
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Bonjour,
    Quelle est la base de données utilisée et quel est le type du champ visiteur ?
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  3. #3
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 382
    Points : 161
    Points
    161
    Par défaut
    Bonjour,

    Base : mysql 5.7
    champ : int (11)

    Merci
    75 ans quelques dents en moins, mais toujours envie d'apprendre

  4. #4
    Membre confirmé Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Points : 492
    Points
    492
    Par défaut
    D'où l'utilité des requêtes préparées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sql = 'UPDATE record SET visiteur = ? WHERE id = ?';
    $req = $pdo->prepare($sql);
    $req->execute([$visiteur, 1]);

  5. #5
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    J'ai lu ça aussi, à vérifier ...
    ...
    Vous ne le saviez peut-être pas, mais contrairement aux types de chaine de caractères (varchar, char, …), le chiffre entre parenthèses pour un type numérique n’a aucune influence sur la taille maximale du type.
    Autrement dit, on peut stocker le même nombre dans un int(11) que dans un int(3), un int ou même un int(42). Ce qui influe la taille maximale, c’est le type en lui même : tinyint, smallint, mediumint, int et bigint.

    TYPE BYTES MINIMUM VALUE (SIGNED/UNSIGNED) MAXIMUM VALUE (SIGNED/UNSIGNED)
    ...
    INT 4 -2147483648 2147483647
    BIGINT 8 -9223372036854775808 9223372036854775807
    ...
    Bref, ce qui me vient à l'esprit d'entrée de jeu, c'est que ça n'est pas parce que PHP déclare une variable comme bien numérique ... que la requête derrière va bien se passer

    On pourrait imaginer qu'un champ de la base de données accepte des valeurs de -128 à +127 et que ce qui arrive de php est un nombre valide certes mais contenant 2000 par exemple => PAN !
    Donc dans ce cas il me faudrait anticiper ce problème
    ex1 : si le nombre qui arrive (est numérique) ET (compris ente -128 et +127) alors je le passe à ma requête ...
    ex2 : Je change de type dans la base de données (néanmoins si j'attendais des valeurs de -128 à 127 initialement, est-bien raisonnable d'accepter 2000 ?)
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  6. #6
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 382
    Points : 161
    Points
    161
    Par défaut
    Merci, je vais me plonger dans les requêtes préparées
    75 ans quelques dents en moins, mais toujours envie d'apprendre

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 03/05/2007, 12h44
  2. Réponses: 8
    Dernier message: 08/09/2006, 14h09
  3. Réponses: 7
    Dernier message: 07/03/2006, 09h34
  4. Erreur Date non prise en compte
    Par priest69 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 23/02/2006, 23h46
  5. [CR8][Delphi6] erreur imprimante non supportée
    Par Sebastien L. dans le forum SDK
    Réponses: 3
    Dernier message: 12/09/2002, 15h42

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