Edit report at http://bugs.php.net/bug.php?id=53336&edit=1

 ID:                 53336
 Comment by:         scott...@php.net
 Reported by:        cbruner at quadro dot net
 Summary:            queries on create_function return only one result
 Status:             Open
 Type:               Bug
 Package:            SQLite related
 Operating System:   linux
 PHP Version:        5.3.3
 Block user comment: N
 Private report:     N

 New Comment:

Can you give me a full test script, I'll need data too to track this
down.


Previous Comments:
------------------------------------------------------------------------
[2010-11-18 06:19:33] cbruner at quadro dot net

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.


------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=53336&edit=1

Reply via email to