从多层数组中读取mysqli_fetch_array中的数据?

问题描述 投票:1回答:3

当我使用mysqli_fetch_array()我得到一个数组,但我如何读取值?是一个While循环是唯一的选择,还是我可以从行和列中选择任何值,就像一个像row[0] column [3]这样的索引的多维数组?

php mysqli
3个回答
3
投票

while循环每次迭代都会获取一行。

您可以使用mysqli_fetch_all将所有行作为多维数组

之后,您可以使用[rowNum][colNum]选择您的值

但要注意,当你的结果有很多行时 - 数组可能非常大并导致内存或其他问题。

更新澄清:

如果要接收多维数组行,有两种方法:

首先:使用fetch_assoc / fetch_array迭代mysqli_result并将行追加到数组:

$rows = array();
while ($row = mysqli_fetch_array($res)) {
    $rows[] = $row;
}
echo $rows[0]['whatever'];

第二:通过一个函数调用接收所有结果:

$rows = mysqli_fetch_all($res, MYSQLI_ASSOC);
echo $rows[0]['whatever'];

就这样。没有更多的方法可用。


1
投票

这取决于您如何从数据库返回结果。

mysqli_fetch_array函数中有标志,您可以设置这些标志来修改返回的结果。

如果您使用$row = mysqli_fetch_array($result, MYSQLI_ASSOC);或OOP $row = $result->fetch_array(MYSQLI_ASSOC);

那么你可以在你的while循环中以$ name ['name']或$ row ['age']的形式访问你返回的结果作为列名

或者如果你使用$row = mysqli_fetch_array($result, MYSQLI_NUM);或在OOP $row = $result->fetch_array(MYSQLI_NUM);

那么你可以像$ row [0]或$ row [3]一样在while循环中访问你的返回结果

简单的例子就是

while($row = mysqli_fetch_array($result)) {
    echo $row['name'] . " " . $row['age'];
}

了解更多信息。阅读PHP.net Fetch Array


0
投票

您的问题表明您的目标只是获得单一价值。如果是这种情况,您应该将查询限制为仅返回您要查找的内容而不是获取所有内容,然后使用PHP在结果中找到您想要的内容。

对于列,指定所需的一列而不是使用*,(SELECT one_column FROM your_table)和行,使用WHERE子句选择特定的id(假设在表上定义)或使用LIMIT子句选择特定的结果集中的行号。然后您不必获取循环或获取所有。您的查询结果(如果成功)将只有一行有一列,您可以获取一次并获取您的值。

当然,如果你需要反复这样做(即在循环中),这不是最好的方法。

© www.soinside.com 2019 - 2024. All rights reserved.