$categories = $dbh->prepare("SELECT * FROM categories WHERE type=\'news\'")|| die "Can\'t prepare statement: $DBI::errstr";
$categories->execute;
$sth = $dbh->prepare("SELECT * FROM articles WHERE type=\'news\' ORDER BY id DESC LIMIT 6")|| die "Can\'t prepare statement: $DBI::errstr";
$sth->execute;
while(($id, $type, $cat, $title, $description, $details, $author, $date, $time) = $sth->fetchrow_array())
{
while(@row = $categories->fetchrow_array)
{
if ($row[1] eq $cat)
{
print $row[1],\'
\';
}
}
print $title, $description, $author, $date, $time,\'
\';
}
$dbh->disconnect; # отключиться от сервера SQL
В результате получаем страничку с новостями:
1 новость 1
2
3
4
5
6
а рядом с каждой новосють должно в случае, если $cat = $row[1], напечатать $row[1], однако внутренний цикл while срабатывает лишь единожды, тоесть печатает $row[1] (в случае равенства $cat) к первой новости, а к остальным нет, что и как переделать, чтобы внутренний цикл работал ко всем новостям?