|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2011-01-06 01:13 UTC] scottmac@php.net
[2011-01-06 01:18 UTC] scottmac@php.net
-Status: Open
+Status: Bogus
[2011-01-06 01:18 UTC] scottmac@php.net
[2011-01-06 01:26 UTC] cbruner at quadro dot net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Oct 25 00:00:02 2025 UTC |
Description: ------------ Using sqlite3, create a function to do a comparison (SQLite3::createFunction) Then query a table using the function. Only one result is returned when multiple results would be expected. Test script: --------------- // callback function for use by the sqlite3 class which returns the distance between 2 points on the earth function SqLDistance($Latitude,$Longitude,$Lat,$Long) { $result = 10000.0; // flag to be off the earth! if (isset($Latitude) && isset($Longitude)) { $lat1rad = $Latitude * 0.01745327;// degrees * pi over 180 $lat2rad = $Lat * 0.01745327;// degrees * pi over 180 $long1rad = $Longitude * 0.01745327;// degrees * pi over 180 $long2rad = $Long * 0.01745327;// degrees * pi over 180 // apply the spherical law of cosines to our $earthRadius = 6378.1; //km $result = $earthRadius * acos(sin($lat1rad) * sin($lat2rad) + cos($lat1rad) * cos($lat2rad) * cos($long2rad - $long1rad)); } return $result; } class MyDB extends SQLite3 { function __construct() { $this->open('zipcode.db'); $this->createFunction('Distance','SqlDistance',4); } function Borked($lat,$long,$count) { $result = $this->query("Select *,Distance(Lat,Long,$lat,$long) as Distance from agents order by Distance Limit 0,$count"); return $result->fetchArray(); } } Expected result: ---------------- An array of results with a length greater then 1. Actual result: -------------- An array of result.