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 :

Integer Overflow PDO [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut Integer Overflow PDO
    Bonjour à tous,

    J'ai une requête qui calcule la distance entre deux points en insérant une longitude et une latitude, elle me ressort toutes les personnes qui sont à X kilomètres.

    Mais j'ai cette erreur

    Integer overflow. The result of an integer operation caused the most significant bit of the result to carry.
    Voici donc la requête, je ne sais pas trop comment m'y prendre pour régler ce problème...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    WITH MESCOORDONNEES AS ( 
      SELECT COS(3.14159265358979*".$longitude."/180) as LNG_COS, SIN(3.14159265358979*".$longitude."/180) as LNG_SIN, COS(3.14159265358979*".$latitude."/180) as LAT_COS, SIN(3.14159265358979*".$latitude."/180) as LAT_SIN 
      FROM table
    )                                 
    SELECT (6371*ACOS(LAT_COS*COS(3.14159265358979*C_LATITUDE/180)*LNG_COS*COS(3.14159265358979*C_LONGITUDE/180)+LAT_COS*LNG_SIN*COS(3.14159265358979*C_LATITUDE/180)*SIN(3.14159265358979*C_LONGITUDE/180)+LAT_SIN*SIN(3.14159265358979*C_LATITUDE/180))) as DISTANCE, (c.C_FAMILLECONTACT||ascii_char(10)||ascii_char(13)||c.C_NOM) as C_NOM, c.* 
    FROM CONTACTFICHE c, MESCOORDONNEES 
    WHERE (C_LATITUDE is not null AND C_LATITUDE <> 0) 
    AND (C_LONGITUDE is not null AND C_LONGITUDE <> 0)
    AND (6371*ACOS(LAT_COS*COS(3.14159265358979*C_LATITUDE/180)*LNG_COS*COS(3.14159265358979*C_LONGITUDE/180)+LAT_COS*LNG_SIN*COS(3.14159265358979*C_LATITUDE/180)*SIN(3.14159265358979*C_LONGITUDE/180)+LAT_SIN*SIN(3.14159265358979*C_LATITUDE/180))) <= 20
    Merci à toute aide qui pourrait être apporté !
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ca ressemble plus à une erreur du SGDB que de PDO.
    Quel est le SGDB et est-ce que la requête fonctionne en dehors de PDO ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Bonjour,

    Merci pour ta réponse et l'intérêt porté à mon problème

    Je suis sous Firebird. J'utilise FlameRobin qui me permet de tester mes requêtes, et elle fonctionne. (Je l'affiche, la récupére et ctrl c/v dans FlameRobin, donc bien tel que je l'exécute.)

    Sous leurs documentations, ça revient à cette erreur : http://www.firebirdfaq.org/faq207/
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Yop tout le monde,

    Aujourd'hui est un grand jour, puisque le sujet est résolu

    Merci au chat et à Gecko, rikemSem et croftman pour leur aide !


    La solution, c'était de tout cast, notamment mes variables avec des floatval, ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    WITH MESCOORDONNEES AS ( 
      SELECT COS(PI()*'.floatval($longitude).'/180) as LNG_COS, SIN(PI()*'.floatval($longitude).'/180) as LNG_SIN, COS(PI()*'.floatval($latitude).'/180) as LAT_COS, SIN(PI()*'.floatval($latitude).'/180) as LAT_SIN 
      FROM RDB$DATABASE 
    )                                 
    SELECT (6371*ACOS(LAT_COS*COS(PI()*C_LATITUDE/180)*LNG_COS*COS(PI()*C_LONGITUDE/180)+LAT_COS*LNG_SIN*COS(PI()*C_LATITUDE/180)*SIN(PI()*C_LONGITUDE/180)+LAT_SIN*SIN(PI()*C_LATITUDE/180))) as DISTANCE, (c.C_FAMILLECONTACT||ascii_char(10)||ascii_char(13)||c.C_NOM) as C_NOM, c.* 
    FROM CONTACTFICHE c, MESCOORDONNEES 
    WHERE (C_LATITUDE is not null AND C_LATITUDE <> 0) 
    AND (C_LONGITUDE is not null AND C_LONGITUDE <> 0)
    AND (6371*ACOS(LAT_COS*COS(PI()*C_LATITUDE/180)*LNG_COS*COS(PI()*C_LONGITUDE/180)+LAT_COS*LNG_SIN*COS(PI()*C_LATITUDE/180)*SIN(PI()*C_LONGITUDE/180)+LAT_SIN*SIN(PI()*C_LATITUDE/180))) <= 20
    Merci à ceux qui ont un peu réfléchis au sujet
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

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

Discussions similaires

  1. integer overflow(depassement de bit)
    Par chekkal dans le forum Firebird
    Réponses: 4
    Dernier message: 15/12/2014, 05h58
  2. Integer overflow avec un SELECT
    Par freud dans le forum SQL
    Réponses: 2
    Dernier message: 22/10/2010, 00h10
  3. Integer overflow avec un champs calculé
    Par gandf dans le forum SQL
    Réponses: 10
    Dernier message: 09/11/2009, 11h57
  4. [phpMyAdmin] Possible integer overflow in memory allocation
    Par Toriyama dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 17/03/2009, 12h24
  5. Message "Integer overflow"
    Par woully dans le forum Delphi
    Réponses: 8
    Dernier message: 20/11/2006, 23h15

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