$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
, который является ключом для результата, возвращаемого предыдущим запросом, однако в любой дальнейшей итерации он будет увеличиваться и что приведет к клавише undefined. Это означает, что вам нужно прекратить использовать переменную $count
и просто использовать $result2[0]
.
Кроме того, лучшим подходом к этому будет использование MySQL JOIN
, в вашем примере это будет SELECT w.fsyn FROM sbsw s JOIN wrsyn w ON s.fwid = w.fwid WHERE s.fword = "'.$searchText.'";
Пожалуйста, используйте разумные имена переменных и отступ правильно. Вы получаете один столбец из каждой строки, поскольку вы только распечатываете один раз для каждой итерации по вашим строкам.
В принципе: для каждой строки напечатайте значение столбца.
Переменная $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]
, поэтому он не будет работать.
JOIN