2010-09-26 208 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

相关问题