2011-04-10 4 views
0

Je trouve l'endroit le plus proche (avec latitude/longitude de l'API Google) dans une zone de rayon avec LON/latitude dans ma base de données SQL, voici ma question:PHP - mySQL numéro de requête

$query = "SELECT id, (3959 * acos(cos(radians(".$lat.")) * cos(radians(lat)) * cos(radians(lon) - radians(".$long.")) + sin(radians(".$lat.")) * sin(radians(lat)))) AS distance FROM finder_location HAVING distance < 25 ORDER BY distance LIMIT 0 , 1"; 

    $result = mysql_query($query); 

    $row = mysql_fetch_array($result); 
    echo $row['id']; 

La requête est de retour correctement à l'intérieur comme phpMyAdmin:

id 9 
distance 0.74066713768542 

Ainsi, la requête compile correctement ...

Mais, quand j'essayé de sortie en PHP, je reçois ces erreurs:

Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la syntaxe droite à utiliser près de '>)) * cos ( radians (lat)) * cos (radians (lon) - radians (-73.988307))' à ligne 1 Warning: mysql_fetch_array(): fourni argument n'est pas un résultat MySQL des ressources

+0

Vous devez regarder la requête finale générée en PHP ('echo $ query;'). Certaines de vos variables semblent être vides. –

+1

éventuellement variable lat $ contient une valeur non valide, vérifier –

Répondre

3

Votre variable php $lat n'est pas renseigné correctement. Vous pouvez voir la fin d'une balise html dans l'erreur mysql. Déboguez vos $lat et $long pour vous assurer qu'ils ont les valeurs correctes avant la requête.

+0

ces variables restituent tout droit long et lat: 40,66677, -73,988307 – alyx

+0

peut-être est 'fournir en sortie 40,66677' qui ressemble '40.66677' dans votre navigateur, mais il a en fait quelques-uns html enroulé autour de la valeur. –

+0

Non, juste des sauts de ligne des deux échos: 40.66677
-73.988307
alyx