3
我正在使用空間擴展名與MySQL進行地理搜索。對於我沒有存儲過程(那工作非常好,當我在MySQL命令行至三那樣地理距離搜索MYSQL
的MySQL> CALL TEST2(GeomFromText( 'POINT(-0.93961472 43.52843475)'),0.6);
DROP PROCEDURE `test2`//
CREATE DEFINER=`root`@`localhost` PROCEDURE `test2`(IN center2 point,IN dist int)
BEGIN
SET @center = center2;
SET @radius = dist;
SET @bbox = CONCAT('POLYGON((',
X(@center) - @radius, ' ', Y(@center) - @radius, ',',
X(@center) + @radius, ' ', Y(@center) - @radius, ',',
X(@center) + @radius, ' ', Y(@center) + @radius, ',',
X(@center) - @radius, ' ', Y(@center) + @radius, ',',
X(@center) - @radius, ' ', Y(@center) - @radius, '))'
);
SELECT professionnels.*, AsText(coord)
FROM professionnels
WHERE Intersects(coord, GeomFromText(@bbox))
AND SQRT(POW(ABS(X(coord) - X(@center)), 2) + POW(ABS(Y(coord) - Y(@center)), 2)) < @radius limit 20;
end
但問題是,我需要提醒的是PHP的。當我做到這一點,錯誤是回報說,
PROCEDURE test2的不能retur n結果 在給定的上下文中設置
所以..我該如何使用回頭來返回一組數據?
感謝
是的,但如果有多個用戶在搜索? 這個搜索實際上是一個功能,允許用戶搜索城市周圍的一些POI,所以它會被很多用戶調用...我不能使用這種方法...它不會工作 – Fazoulette 2011-05-17 00:15:31
好吧..我用過驅動程序MYSQLI而不是MYSQL,它的工作原理。我可以檢索存儲過程返回的數據集。 但這是個好主意嗎? 謝謝 – Fazoulette 2011-05-17 00:33:44
@Fazoulete,這是一個破解,但如果你使用臨時表,每個會話將擁有它自己的表,所以用戶不會看到其他每個結果。如果你直接從SP中得到結果集,那會更好。 – Johan 2011-05-17 13:04:26