0

我正在使用 ajax 脚本发送参数并获得对ajax.php. 这工作正常,因为我可以发送参数并获得响应。我的问题是,当我在ajax.php脚本中回显查询时,我会检查我的浏览器网络。我看到查询不完整,因此返回意外结果。但是当我在其中执行查询时,phpMyAdmin我得到了正确的结果。请帮忙。

这是下面的实际查询

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

$db = new MysqliDb ('uveehae_road');
$results= $db->rawQuery('SELECT id, address, ( 6371 * acos( cos( radians('.$lat.') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('.$lon.') ) + sin( radians('.$lat.') ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 100 ORDER BY distance LIMIT 0,1');

这是我打印查询并在浏览器网络上检查时看到的

SELECT id, address, ( 6371 * acos( cos( radians(-26.0749518) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(28.1167666) ) + sin( radians(-26.0749518) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance 

如您所见,查询不完整,但我不知道为什么。

4

2 回答 2

2

据我记得,您正在使用的那个 MysqliDb 的作者完全没有 SQL 知识,并且在这种情况下使他们的课程失败。更不用说它非常容易发生 SQL 注入。

您最好停止使用它并从 PDO 准备好的语句开始。

于 2017-10-20T12:13:35.407 回答
0

所以最基本的对我有用..

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

    $servername = "localhost";
    $username = "user";
    $password = "password";
    $dbname = "dbname";

    $conn = new mysqli($servername, $username, $password,$dbname);

    $sql = "SELECT id,address, ( 6371 * acos( cos( radians($lat) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians($lon) ) + sin( radians($lat) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 100 ORDER BY distance LIMIT 0,1";

    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
           echo json_encode($row);
        }
    }
于 2017-10-23T06:59:57.107 回答