PHP 7 | MYSQLI查询不提取仅提取一个条目

时间:2016-04-14 23:33:29

标签: php mysql mysqli

我有这段代码:

$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。当我测试 &#34; SELECT id FROM betting WHERE id = $ row&#34;  在phpMyadmin中,它返回我想要的,但由于某种原因不在我的PHP代码中。当我有4个开放= 1时,它会回复一个id。

1 个答案:

答案 0 :(得分:2)

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结束循环。 -----