2011-05-11 104 views
0

誰能告訴我什麼是錯用下面的代碼---PHP/MySQL查詢問題

for($i=0; $i<count($strnamearray); $i++){ 
echo $strnamearray[$i]."<br />"; 

$cordcquery = "SELECT `lat` , `lng` FROM `traffic` WHERE `strname` = '{$strnamearray[$i]}' LIMIT 0 , 30;"; 
$cordresult = mysql_query($cordcquery); 

if (!$cordresult) 
{ 
    die('Invalid strncquery: ' . mysql_error()); 
} 

while($cordrow = @mysql_fetch_assoc($cordresult)){ 
    echo $cordrow['lng'].",".$cordrow['lat']; 
    echo "<br />"; 
} 
} 

這裏$ strnamearray [$ i]爲其中包含了一些名稱的數組。執行此PHP代碼後沒有顯示錯誤。但問題是我沒有得到我想要的輸出...

+1

好吧,這很有幫助。桌子上有什麼?陣列中有什麼?你得到的輸出是什麼?爲什麼你在2011年使用mysql而不是mysqli或PDO並準備好了語句?你是否非常渴望得到SQL注入攻擊? – chx 2011-05-11 23:47:53

+0

@chx:在'mysql'上使用'mysqli'沒有什麼嚴格的優勢,只是界面的改變。並不是所有的代碼都是OOP,也不應該總是這樣。 – Orbling 2011-05-14 17:20:11

+0

首先,「$ cordcquery」顯示什麼?你可以手動運行嗎?當我處理SQL時,我總是檢查輸出的查詢可以在命令行或查詢窗口中輸入並運行。其次,這可能沒有任何結果,但在函數前面使用「@」可以抑制錯誤消息。 – mardala 2011-05-18 22:50:31

回答

0

這是在黑暗中拍攝的一些信息,但有兩件事。

  1. echo $cordcquery只是爲了確保sql看起來是正確的,你可以直接在MYSQL中執行它。從我可以告訴它應該,但不知道變量我什麼都不知道。

  2. 而不是LIMIT 0, 30只使用LIMIT 30。應該是同樣的事情,但我已經看到了一些funkiness取決於你使用的是什麼版本的PHP和MySQL與傳遞LIMIT 偏移量,行數。從我能記得的情況來看,它將採用偏移量,而不是分析行數,因此不會返回任何信息。

讓我知道這是否有幫助。