$count =0;
$result1 = mysql_query("SELECT fwid FROM sbsw WHERE fword = '".$searchText."'");
while ($result2= mysql_fetch_array($result1))
{
$result3 = mysql_query("SELECT fsyn FROM wrsyn WHERE fwid = '".$result2[$count]."'");
$result4= mysql_fetch_array($result3);
print $result4[$count].'<br>';
$count++;
}
mysql_free_result($result1);
mysql_free_result($result3);
回答
讓我們一起來看看如何mysql_fetch_array作品 - 例如,如果你有一個像
id | name | surname | role
1 John Smith user
2 Peter Qeep user
3 Mark Ziii admin
當你執行一個查詢SELECT * FROM table
然後循環$result = mysql_fetch_array($query)
,$result
將永遠是(4)含有
[0] => id,
[1] => name,
[2] => surname,
[3] => role
因此,當你在執行第一次迭代查詢$result3 = mysql_query("SELECT fsyn FROM wrsyn WHERE fwid = '".$result2[$count]."'");
,$count
將0
這對於關鍵結果由以前的查詢返回,但是在任何進一步的迭代中它將增加,並且這將導致未定義的鍵。這意味着您必須停止使用變量$count
,而只需使用$result2[0]
。
此外,這種方式更好的辦法是使用MySQL JOIN
,在你的榜樣將是SELECT w.fsyn FROM sbsw s JOIN wrsyn w ON s.fwid = w.fwid WHERE s.fword = "'.$searchText.'";
謝謝cypher! – Astraport 2010-09-26 18:18:00
請使用合理的變量名稱並正確縮進。您每行都會得到一列,因爲您只在每行上打印一次行。
基本上:對於每一行,打印一列的值。
$ count-variable決定了哪一列,但它顯然沒有意義,它計算了你所在的行。
像這樣的東西應該這樣做:(未測試)
$result1 = mysql_query("SELECT fwid FROM sbsw WHERE fword = '".$searchText."'");
while ($result2= mysql_fetch_array($result1))
{
$result3 = mysql_query("SELECT fsyn FROM wrsyn WHERE fwid = '".$result2['fwid']."'");
$result4= mysql_fetch_row($result3);
for($x = 0; $x < count($result4); $x++){
print $result4[$x].'<br>';
}
}
mysql_free_result($result1);
mysql_free_result($result3);
哦,我改變fetch_array在內部循環,以fetch_row緩解迭代。
這並不能解決主要問題 - '$ result2 [$ count]',因此它不起作用。 – cypher 2010-09-26 18:09:34
哦,我的,謝謝:)雖然現在應該工作,作爲他的方法最接近的解決方案,即使加入明顯更好 – 2010-09-26 18:15:21
編輯後也不會工作,你正在使用mysql_fetch_array這是BY DEFAULT返回一個numeric-索引數組,你需要使用選項'MYSQL_ASSOC'('mysql_fetch_array($ query,MYSQL_ASSOC);')來獲得關聯數組鍵:-) – cypher 2010-09-26 18:16:26
- 1. Foreach只返回一個數組元素的第一個字母?
- 2. json_encode只返回數組的第一個元素?
- 3. CasperJS getElementsByXPath只返回第一個元素
- 4. node-mysql數組轉義只返回第一個元素?
- 5. 爲什麼我的javascript函數只返回一個數組的第一項?
- 6. 爲什麼Haskell的查找總是隻返回一個元素?
- 7. MongoDB:爲什麼find和findOne只返回最後一個數組元素?
- 8. 爲什麼ORDER只返回第一行
- 9. 爲什麼Array.from()返回第一個元素undefined?
- 10. 爲什麼返回只返回第一個?
- 11. 爲什麼我只看到一個div元素被返回?
- 12. 爲什麼OPENXML只返回一個元素
- 13. 爲什麼數組中的第一個元素始終爲0?
- 14. 爲什麼我只接收數組中每個元素的第一個值?
- 15. 爲什麼函數只使用數組的第一個元素? (C++)
- 16. 這個函數爲什麼只返回一個數組值? (foreach)
- 17. 爲什麼我的循環只能看到第一個數組元素的值?
- 18. 爲什麼數組中的第一個元素是空的?
- 19. 功能只返回第一個數組
- 20. 爲什麼只有第一個記錄從這個PHP數組中返回?
- 21. 爲什麼LOOKUP不匹配數組中的第一個元素?
- 22. 返回一個子陣列的只有第一個元素$ elemMatch
- 23. EF6:爲什麼Count返回0但Find返回一個元素?
- 24. 爲什麼我的數組公式只返回一個值?
- 25. 爲什麼getResult()只返回一個只有最後一個記錄的數組?
- 26. 爲什麼elem_match返回0個元素?
- 27. 爲什麼將select元素轉換爲數組會返回一個children元素數組?
- 28. 爲什麼每個人只會經歷第一個元素?
- 29. 何時/何時/爲什麼第一個數組元素下降?
- 30. 爲什麼不輸出第一個元素數組?
我沒有看到任何歸國發生。請澄清你的問題。 – NullUserException 2010-09-26 17:53:33
您還需要了解如何使用'JOIN' s – NullUserException 2010-09-26 17:58:32