2013-12-10 99 views
0

我正在處理查詢並收到此錯誤。帶算術的SQL查詢

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\getAssets.php on line 19 

我知道一個事實,我的查詢是錯誤的,我只是不明白爲什麼。這可能是愚蠢的,我只是一直在看它太長。

$result = mysqli_query($con,'SELECT * FROM location WHERE ((320000 * ABS(SQRT(SQUARE(xCoor - "' . $_POST['latitude'] .'") + SQUARE(yCoor - "' . $_POST['longitude'] .'"))) < 50)'); 

你的第二雙眼睛非常感謝!

+1

'if(!$ result){die(mysqli_error($ con)); }永遠不要假設MySQL查詢起作用。 *始終*檢查錯誤。如果你使用的教程沒有告訴你使用'mysqli_error',那就錯了。 –

+0

它是否從命令行/ phpmyadmin工作?完整的字符串是什麼樣的? sql注入。 – jeroen

+0

我不想這麼說,但是如果你使用了「希望參數1是mysqli_result,boolean given」,你會發現有很多帖子有幫助。 –

回答

0

你的查詢語法錯誤的:你應該寫這樣的(不需要單引號):

$rs = mysqli_query($con, "SELECT * FROM location WHERE ((320000 * ABS(SQRT(SQUARE(xCoor - " . $_POST['latitude'] . ") + SQUARE(yCoor - " . $_POST['longitude'] . "))) < 50)"); 

當然$ _ POST [「緯度」]和$ _ POST [「東經」] MUST是數字...

您還應該添加您正在使用的mysqli_fetch_array代碼,因爲你給的代碼不能產生這樣的錯誤... :-)

一般來說,$結果(結果集)應該傳遞給mysq li_fetch_array()...

$rs = mysqli_query($con, "SELECT * FROM location WHERE ((320000 * ABS(SQRT(SQUARE(xCoor - " . $_POST['latitude'] . ") + SQUARE(yCoor - " . $_POST['longitude'] . "))) < 50)"); 
if (!$rs) { 
    die(mysqli_error()); 
} 

while ($row = mysqli_fetch_array($rs, MYSQLI_BOTH)) { 
    $field1 = $row["field1"]; 
    ... 
} 
+0

謝謝你,有一個語法錯誤,我發現它。在MySQL中也沒有Square函數,所以我會自己解決這個問題 – Chitowns24