我的表「info」有四列用戶名,緯度,經度和文件名。我發送一個請求從android(客戶端)獲取給定的一組用戶名,經度和緯度組合的特定文件名,這裏是處理請求的代碼的php(服務器端)...mysql查詢問題
mysql_connect("localhost", "bb", "707") or die(mysql_error());
mysql_select_db("test1") or die(mysql_error());
$usrnm = $_REQUEST["username"];
$lat = $_REQUEST["lat"];
$lng = $_REQUEST["lng"];
$query = sprintf("SELECT filename FROM info WHERE username = '%s'"
,mysql_real_escape_string($usrnm)
,"AND latitude = %s",mysql_real_escape_string($lat)
,"and longitude = %s",mysql_real_escape_string($lng));
$result = mysql_query($query)
or die(mysql_error());
$row = mysql_fetch_array($result);
echo $row["filename"];
這裏是問題: 如果我使用上面的查詢,返回的文件名僅基於用戶名,並且不考慮緯度和經度。簡單來說,只有第一個「名稱=值」對之後的where子句用於獲取文件名...爲什麼?是查詢錯誤還是有其他方法來做到這一點....我使用MYSQL
另一個觀察:如果我硬編碼的用戶名,緯度和經度值,然後它返回正確的文件名...
請注意,您的代碼看起來與SQL注入安全的,但不是因爲你沒有附上$瓦爾在單引號'''的查詢字符串內。 – Johan 2011-05-28 22:06:51
@Johan:好,我應該注意到那時我發佈了我的答案。 – thirtydot 2011-06-02 00:49:29