2010-09-26 206 views
0
$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); 
+0

我沒有看到任何歸國發生。請澄清你的問題。 – NullUserException 2010-09-26 17:53:33

+1

您還需要了解如何使用'JOIN' s – NullUserException 2010-09-26 17:58:32

回答

1

讓我們一起來看看如何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]."'");$count0這對於關鍵結果由以前的查詢返回,但是在任何進一步的迭代中它將增加,並且這將導致未定義的鍵。這意味着您必須停止使用變量$count,而只需使用$result2[0]

此外,這種方式更好的辦法是使用MySQL JOIN,在你的榜樣將是SELECT w.fsyn FROM sbsw s JOIN wrsyn w ON s.fwid = w.fwid WHERE s.fword = "'.$searchText.'";

+0

謝謝cypher! – Astraport 2010-09-26 18:18:00

0

請使用合理的變量名稱並正確縮進。您每行都會得到一列,因爲您只在每行上打印一次行。

基本上:對於每一行,打印一列的值。

$ 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緩解迭代。

+0

這並不能解決主要問題 - '$ result2 [$ count]',因此它不起作用。 – cypher 2010-09-26 18:09:34

+0

哦,我的,謝謝:)雖然現在應該工作,作爲他的方法最接近的解決方案,即使加入明顯更好 – 2010-09-26 18:15:21

+0

編輯後也不會工作,你正在使用mysql_fetch_array這是BY DEFAULT返回一個numeric-索引數組,你需要使用選項'MYSQL_ASSOC'('mysql_fetch_array($ query,MYSQL_ASSOC);')來獲得關聯數組鍵:-) – cypher 2010-09-26 18:16:26

相關問題