2017-10-20 15 views
0

我正在使用ajax腳本發送參數並獲得對ajax.php的響應。這工作正常,因爲我可以發送參數並獲得響應。我的問題是,當我在ajax.php腳本中迴應查詢時,我檢查了我的瀏覽器網絡。我發現查詢不完整,因此返回意外結果。但是當我在phpMyAdmin內執行查詢時,我會得到正確的結果。請幫忙。爲什麼在使用ajax/php響應時mysqli查詢未完成或切斷

這低於

$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 

上你可以看到查詢是不完整的,但我不知道爲什麼。

+1

這是什麼「意外結果」返回? –

+0

@YourCommonSense,因爲查詢是不完整的,它帶回整個數據庫記錄,而不是隻帶來距離<100 – user7498826

+0

奇怪的記錄。我寧願期待查詢錯誤。但無論如何MysqliDb是無法使用的,所以沒有解決方案 –

回答

2

據我所知,你正在使用的MysqliDb的作者在SQL中絕對沒有任何知識,並且使得他們的類在這樣的情況下失敗。更別說它非常容易發生SQL注入。

您最好不要使用它,並從PDO準備的語句開始。

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); 
     } 
    } 
+0

,而這裏是多餘的。 –

+0

和SQL注入仍然存在。一些,你真的想讓任何人免費進入你的數據庫? –

相關問題