理解 mysqli_fetch_array()

Understanding mysqli_fetch_array()

有没有办法让下面的代码更干净? 我想像这样访问 $query4week 的行:$query4week[0]。 但是 mysqli_query() returns 一个我不知道如何访问其特定行的对象。因此,使用 fetch_arrayfor 循环我决定创建自己的索引。

$sql2 = "SELECT * FROM meals ORDER BY RAND() LIMIT 7";
$query4week = mysqli_query($con, $sql2) or die(mysqli_error($con));
for ($i = 0; $result = mysqli_fetch_array($query4week, MYSQLI_ASSOC); $i++)
{
    $meal4week[$i] = $result['meal'];
}

我还在学习PHP,但对OOP主题还很薄弱,请耐心等待:-)

这样做

$i = 0; 
while ($result = mysqli_fetch_array($query4week, MYSQLI_ASSOC))
{
    $meal4week[$i] = $result['meal'];
    $i++;
}

应该可以。

如果要获取关联数组,则不需要 for 循环。

$i = 0;
while($row = mysqli_fetch_array($query4week, MYSQLI_ASSOC))
{
    $meal4week[$i] = $row['meal'];
    $i++;
}

mysqli_query returns 你一个代表查询结果的资源。您需要使用 mysql_fetch_* 函数逐行迭代结果。所以是的,如果您对第一行以外的内容感兴趣,则需要某种循环。

这里已经有一些非常合理的答案,但是评论有点长。如果您要创建的只是一个从索引 0 开始的数字索引数组,则不需要显式定义索引。

while($row = mysqli_fetch_array($query4week, MYSQLI_ASSOC)) {
    $meal4week[] = $row['meal'];
}

应该可以正常工作。不需要 $i