Php 未找到存储的MySQL函数
尝试运行此脚本时出现此错误。我在调用函数之前创建它,所以我不确定为什么它会返回它不存在的事实 错误: 函数db.fn_距离_余弦不存在[] 同样,同一个脚本在本地运行良好,但我在另一台机器上遇到了这个问题 想法 谢谢Php 未找到存储的MySQL函数,php,mysql,Php,Mysql,尝试运行此脚本时出现此错误。我在调用函数之前创建它,所以我不确定为什么它会返回它不存在的事实 错误: 函数db.fn_距离_余弦不存在[] 同样,同一个脚本在本地运行良好,但我在另一台机器上遇到了这个问题 想法 谢谢 <?php $con = mysql_connect("localhost","username","password") or die ('Error connecting to mysql'); //remote $db_selected = mysql_select_
<?php
$con = mysql_connect("localhost","username","password") or die ('Error connecting to mysql'); //remote
$db_selected = mysql_select_db('db', $con); //remote
if (!$db_selected) {
die ('Can\'t use selected database : ' . mysql_error());
}
$lat = $_GET["lat"];
$lon = $_GET["lon"];
$rows = array();
$establishFunction = mysql_query("DROP FUNCTION IF EXISTS fn_distance_cosine;
CREATE FUNCTION fn_distance_cosine (
latitude_1 DOUBLE,
longitude_1 DOUBLE,
latitude_2 DOUBLE,
longitude_2 DOUBLE
)
RETURNS DOUBLE
DETERMINISTIC
SQL SECURITY INVOKER
RETURN ACOS(
SIN(RADIANS(latitude_1)) * SIN(RADIANS(latitude_2))
+ COS(RADIANS(latitude_1)) * COS(RADIANS(latitude_2))
* COS(RADIANS(longitude_2 - longitude_1))
) * 3956.547;
");
mysql_query("SET @input_lat :=" . $lat . ";");
mysql_query("SET @input_lon :=" . $lon . ";");
mysql_query("SET @max_latitude := @input_lat + DEGREES(50.0/3956.547);");
mysql_query("SET @min_latitude := @input_lat - DEGREES(50.0/3956.547);");
mysql_query("SET @max_longitude := @input_lon + DEGREES(50.0/3956.547/COS(RADIANS(@input_lat)));");
mysql_query("SET @min_longitude := @input_lon - DEGREES(50.0/3956.547/COS(RADIANS(@input_lat)));");
if($result = mysql_query("SELECT
*,
fn_distance_cosine(lat, lon, @input_lat, @input_lon) AS distance_in_miles,
COUNT(*) AS store_number_count
FROM stores
JOIN items_stores
ON stores.store_number=items_stores.store_number
WHERE `lat` BETWEEN @min_latitude AND @max_latitude
AND `lon` BETWEEN @min_longitude AND @max_longitude
GROUP BY stores.store_code
HAVING store_code_count > 1
ORDER BY distance_in_miles
LIMIT 10;
")){
while ($r = mysql_fetch_assoc($result)){
$rows[] = $r;
}
}else{
//failed.
echo (mysql_error ());
}
print json_encode($rows);
mysql_close($con);
?>
我的db用户没有存储过程的正确权限。您好,在我的情况下,我假设我的功能可以从客户端(如查询浏览器或Navicat)执行,但不能通过web执行。请您提一下许可证的名称好吗