PHP 7|MYSQLI查询不是只获取一个条目


PHP 7 | MYSQLI Query not fetching only fetching one entry

我有这个代码:

$conn = mysqli_connect($sql_servername, $sql_username, $sql_password, $sql_dbname);
$bets = mysqli_fetch_array(mysqli_query($conn, "SELECT `id` FROM `betting` WHERE `open`=1"), MYSQLI_NUM);
foreach($bets as $row){
        $bet = mysqli_query($conn, "SELECT `id` FROM `betting` WHERE `id`=$row");
        $hostu = $bet[0];
        $bet_amount = $bet[4];
        echo "
        <br>
        <div style='"border:1px solid grey;'">
            <span>Bet: $bet_amount Rubies, Opponent (host): $hostu</span><p>id $row</p>
            <button style='"width: 10%;'" onclick='"window.location = 'bet.php?id=" . $row ."''">Bet</button>
        </div>
        ";
    }

这段代码应该选择所有的id并在数组中返回给我,但它只获取一个id"从betting选择id,其中id=$row"在phpMyadmin中,它返回的正是我想要的,但由于某些原因,它没有出现在我的php代码中。当我有4个开放的id=1时,它回声为一个id。

fetch_array函数将只将第一行检索到数组中,并向前移动行指针。您需要做的是使用循环逐步遍历行指针,以返回每个行指针,直到行指针找不到更多行为止。

尝试以下代码:

$conn = mysqli_connect($sql_servername, $sql_username, $sql_password, $sql_dbname);
$bets = mysqli_query($conn, "SELECT id FROM betting WHERE open=1");
while( $row = mysqli_fetch_array( $bets, MYSQL_NUM ) ) { 
    // Do something with your row data
    echo $row[0];
}

本质上,while循环正在从查询结果中收集$row的新实例,并向前推进行指针。当没有更多的行要获取时,fetch_array将返回false结束循环。-----