Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 距离计算不返回结果_Php_Mysql_Sql_Distance - Fatal编程技术网

Php 距离计算不返回结果

Php 距离计算不返回结果,php,mysql,sql,distance,Php,Mysql,Sql,Distance,来自api.php的代码: $lat = $_GET['lat']; $lng = $_GET['lon']; try {$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);} catch(PDOException $e){echo($e->getMessage());} $stmt = $dbh->prepare("SELECT *, (P

来自api.php的代码:

    $lat = $_GET['lat'];
    $lng = $_GET['lon'];

    try {$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);}
    catch(PDOException $e){echo($e->getMessage());}

    $stmt = $dbh->prepare("SELECT *, (POW(69.1 * (`lat` - :lat), 2) +
                            POW(69.1 * (:lon - `long`) * COS(`lat` / 57.3), 2)) AS distance
                            FROM `venues` HAVING distance < SQRT(16) ORDER BY distance");
    $stmt->bindParam(':lat', $lat, PDO::PARAM_STR);
    $stmt->bindParam(':lon', $lon, PDO::PARAM_STR);


    $venues = array();
    if ($stmt->execute()) {
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            $venues[] = $row;       
            echo $_GET['jsoncallback'] . json_encode($venues);
        }
    }
…它返回的结果很好


我的语法有什么问题?

对于
$lon
/
$lng
变量,您有两个名称。 请尝试以下方法:

$lon = $_GET['lon'];

问题就在这里。您在查询中使用的是
:lon
而不是
lng

  $stmt = $dbh->prepare("SELECT *, (POW(69.1 * (`lat` - :lat), 2) +
                POW(69.1 * (:lon - `long`) * COS(`lat` / 57.3), 2)) AS distance
                  FROM `venues` HAVING distance < SQRT(16) ORDER BY distance");
$stmt=$dbh->prepare(“选择*,(POW(69.1*(`lat`-:lat),2)+
功率(69.1*(:lon-`long`)*COS(`lat`/57.3),2))作为距离
从距离
改用

$stmt = $dbh->prepare("SELECT *, (POW(69.1 * (`lat` - :lat), 2) +
                  POW(69.1 * (:lng - `long`) * COS(`lat` / 57.3), 2)) AS distance
                   FROM `venues` HAVING distance < SQRT(16) ORDER BY distance");
$stmt=$dbh->prepare(“选择*,(POW(69.1*(`lat`-:lat),2)+
功率(69.1*(:lng-`long`)*COS(`lat`/57.3),2))作为距离
从距离
I。。。我没有借口。谢谢你在一分钟内指出了我在三十分钟内找不到的东西。我需要一些睡眠!
$stmt = $dbh->prepare("SELECT *, (POW(69.1 * (`lat` - :lat), 2) +
                  POW(69.1 * (:lng - `long`) * COS(`lat` / 57.3), 2)) AS distance
                   FROM `venues` HAVING distance < SQRT(16) ORDER BY distance");