Mysqli запрос возвращает неизвестные дополнительные записи с фактическим результатом - PullRequest
0 голосов
/ 15 мая 2018

Я запрашиваю записи, которые он извлекает, но показывает странный empty record, который необычен даже в базе данных.

Дополнительная запись означает, что в списке есть лишняя пустая строка <li>.$ dba - это соединение с базой данных.

$dba=mysqli_connect('127.0.0.1','root','','store');

foreach не работает должным образом.

Пожалуйста, помогите решить.

<?php include ('inc/db.php');
$zmcats     = "select i.ename as iname,c.ename as cname, c.id as cid
from items i
inner join categories c on c.id = i.cat_id
where i.view > 4
and c.id = i.cat_id
and c.status = 1
group by c.id
";
$zmcat      = $dba->query($zmcats);
//$zzmcat       = array();
while ($zzmcat[] = $zmcat->fetch_array(MYSQLI_ASSOC)){}
foreach ($zzmcat as $zcatzn) {
?>
<li class="category-list list-parent"><a href="#"><?php echo $zcatzn["cname"]; ?></a>
    <ul class="list-child">
    <?php
    $q  = "SELECT id, ename FROM items 
    WHERE view > 4 and status = 1 and cat_id='".$zcatzn['cid']."' ";
    $qq = $dba->query($q);
    while ($product = $qq->fetch_array(MYSQLI_ASSOC)) {
    ?>
        <li class="category-list"><a href="#">
        <?php echo $product['ename']; ?>
        </a></li>
    <?php } ?>
    </ul>
</li>
<?php } ?>

enter image description here

1 Ответ

0 голосов
/ 15 мая 2018

Цикл foreach после цикла while не нужен, просто используйте простой цикл while

$zmcats = "select i.ename as iname,c.ename as cname, c.id as cid
            from items i
                inner join categories c on c.id = i.cat_id
            where i.view > 4
            and c.id = i.cat_id
            and c.status = 1
            group by c.id";

$zmcat = $dba->query($zmcats);

while ($zzmcat = $zmcat->fetch_array(MYSQLI_ASSOC)){

?>
    <li class="category-list list-parent"><a href="#"><?php echo $zcatzn["cname"]; ?></a>
    <ul class="list-child">
<?php
    $q  = "SELECT id, ename 
            FROM items 
            WHERE view > 4 
            and status = 1 
            and cat_id='$zcatzn[cid]'";

    $qq = $dba->query($q);
    while ($product = $qq->fetch_array(MYSQLI_ASSOC)) {
?>
        <li class="category-list"><a href="#">
<?php 
        echo $product['ename']; 
?>
        </a></li>
<?php 
    } 
?>
    </ul>
</li>
<?php 
} 
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...