2011-05-10 96 views
1

我已經在現有的腳本中有以下查詢 - 但它並不總是返回一個值,即使它應該基於數據庫中的內容。數據庫中有很多東西應該抓住 - 它們在那裏。雖然沒有結果返回

看不出有什麼問題 - 但我幾乎沒有這個了:)看什麼?

$query = "SELECT id FROM xtags WHERE tag_id = '$tagid' ORDER BY RAND() Limit 2"; 
$result = mysql_query($query) or die(mysql_error()); 

while($row = mysql_fetch_array($result)){ 

      $query = "SELECT * FROM xtable WHERE id = '$row[id]'"; 
      $result = mysql_query($query) or die(mysql_error()); 
      $row2 = mysql_fetch_assoc($result); 
      echo $row2[title]; 

} 
+1

效率低下,可以用1個查詢完成。學習JOIN – 2011-05-10 20:52:54

+0

只需要一個sql查詢 – soju 2011-05-10 20:53:50

+0

就可以做到這一點毫無疑問 - 只需在這裏進行一些調試即可。 – 2011-05-10 20:55:04

回答

0

問題解決了 - 做了一個連接語句。

4

$ result正在循環內部和外部使用,嘗試在內部創建一個新變量,而不是重新使用外部變量。

2

您正在重複使用$result變量,該變量覆蓋用於while條件的值。在循環內爲$query$result使用不同的名稱。

+0

這不是尼克。仍然返回偶爾的「沒有結果」集。 – 2011-05-10 20:55:34

+0

..你確定你的SQL語句是正確的?您的代碼似乎沒有任何問題,導致您的SQL查詢成爲您可能遇到的進一步問題的罪魁禍首。 – Nick 2011-05-10 21:04:05

0

我不知道是否可以,但是您使用$ result兩次,一個在「while」之前,另一個在「while」之內。

我會親自拆分字符串和變量$行。

爲什麼不使用var_dump()來查看$ row和其他變量?

0

我不明白你正在嘗試真正做到,但嘗試這個辦法:

$query = "SELECT id FROM xtags WHERE tag_id = '".$tagid."' ORDER BY RAND() Limit 2"; 
$result = mysql_query($query) or die(mysql_error()); 

while($row = mysql_fetch_array($result)){ 

      $query2 = "SELECT * FROM xtable WHERE id = '".intval($row[id])."'"; 
      $result2 = mysql_query($query2) or die(mysql_error()); 
      $row2 = mysql_fetch_assoc($result2); 
      echo $row2[title]; 

}