我有这段代码:
$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。
答案 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结束循环。 -----