使用函数获取数据时无限重复数据库行

我正在尝试从数据库(票证表)中获取一些行并显示在我的网站上,我创建了两个函数,一个用于运行命名的任何查询runquery,另一个用于从票证表中读取,这是我的代码:


    function runquery($conn , $sql )

{

    $result=mysqli_query($conn , $sql) ;

    if(!$result)

    {


        die  (mysqli_error($conn));

    }

    return $result ;

}


function get_tickets($conn)

{


    return runquery($conn , "SELECT * FROM tickets WHERE userid=".$_SESSION['userid'] ) ;

}

这是我如何使用这个功能


    <ul>

        <?php 

            $data = get_tickets($conn);

        while($ticket =mysqli_fetch_assoc(   $data )) {?>

        <li><?php echo $ticket['id'] ; ?>-<?php echo $ticket['title'] ; ?></li>

        <?php } ?>

    </ul>

问题是当我像这样将我的 get_tickets 函数直接放在 mysqli_fetch_assoc 中时


while($ticket =mysqli_fetch_assoc(get_tickets($conn)))

我陷入了无限循环,但是当我像这样在 mysqli_fetch_assoc 之外调用 get_tickets 函数时


$data = get_tickets($conn);

while($ticket =mysqli_fetch_assoc(   $data ))

它工作正常......为什么会这样?


慕村225694
浏览 98回答 1
1回答

慕妹3242003

如果您将get_tickets($conn)保留在循环中,您将在每次迭代中执行查询。这意味着它$ticket在循环中总是相同的值,并且会继续下去。因此,当然,您必须在循环之外运行一次查询。
打开App,查看更多内容
随时随地看视频慕课网APP