以下是我的问题,我有一个SQLite表格,其中包含位置和纬度/经度信息。基本上我需要:
SELECT location, HAVERSINE(lat, lon) AS distance FROM location ORDER BY distance ASC;
HAVERSINE()
是一个PHP函数,它应该返回给定一对纬度和经度值的大圆距离(以英里或公里为单位)。其中一个纬度/经度对应该由PHP提供,另一个纬度/经度对应于locations
表中可用的每个纬度/经度行。
由于SQLite没有任何地理空间扩展(PDO::sqliteCreateFunction()
就足够了,但是我的有限经验可以简化为类似于PHP手册中提供的用法示例。$db = new PDO('sqlite:geo.db');
function md5_and_reverse($string) { return strrev(md5($string)); }
$db->sqliteCreateFunction('md5rev', 'md5_and_reverse', 1);
$rows = $db->query('SELECT md5rev(filename) FROM files')->fetchAll();
我遇到了一些麻烦,无法确定如何使SQLite用户定义函数从PHP和表数据中同时处理数据。我希望有人能够帮助我解决这个问题,并更好地理解SQLite UDFs(在我看来是SQLite的一个重要优点)。谢谢!