$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