2011-11-26 54 views
2

我從java獲得一個字符串:「2011-11-25 08:16:50」 post_date列是TIMESTAMP 但是下面的查詢沒有給出結果。什麼是錯誤?Android php mysql查詢

$date2 = $_POST['Date']; 

$result= mysql_query("Select * FROM (Select * FROM user WHERE latitude > $minLat AND latitude < $maxLat AND longitude > $minLon AND longitude < $maxLon AND post_date > $date2 ORDER BY post_date DESC LIMIT $amount1) a ORDER BY post_id"); 

while($results = mysql_fetch_assoc($result)) 
    $output[]=$results; 

print(json_encode($output)); 
mysql_close(); 
+0

你能說清楚根本沒有輸出還是空的JSON數組?無論哪種方式,你都沒有做任何錯誤檢查。在* mysql_query()'調用之後,你需要*來做到這一點。否則,如果查詢失敗,腳本將中斷。如何做到這一點在[mysql_query()'](http://php.net/mysql_query)手冊或本[參考問題。](http://stackoverflow.com/questions/6198104/reference -what-a-perfect-code-sample-using-the-mysql-extension) –

+0

此外,您顯示的代碼易受[SQL注入](http://php.net/manual/en/security。 database.sql-injection.php)。使用適當的衛生方法(例如'mysql_real_escape_string()'用於傳統的mysql庫),或切換到PDO並準備好語句。 –

+0

請編輯查詢到 $ result = mysql_query(「Select * FROM(選擇* FROM用戶WHERE緯度> $ minLat和緯度<$ maxLat和經度> $ minLon和經度<$ maxLon AND post_date> $ date2 ORDER BY post_date DESC LIMIT $ amount1)ORDER BY post_id「)或die(mysql_error()); 並給我們錯誤我認爲這是一個syntex錯誤與mysql – Sedz

回答

1

您必須在MySQL中單引號日期。另外,由於您直接從$_POST獲取,因此建議您首先使用mysql_real_escape_string()進行轉義。

$result= mysql_query(" 
    Select * FROM (
    Select * FROM user 
    WHERE 
     latitude > $minLat 
     AND latitude < $maxLat 
     AND longitude > $minLon 
     AND longitude < $maxLon 

     -- Surround $date2 with quotes 
     AND post_date > '$date2' 
    ORDER BY post_date DESC LIMIT $amount1) a 
    ORDER BY post_id"); 
+0

duh ...感謝很多人這是引用...反正..我知道sql注入再次感謝。 – heav3n