当我使用mysqli_fetch_array()
我得到一个数组,但我如何读取值?是一个While循环是唯一的选择,还是我可以从行和列中选择任何值,就像一个像row[0] column [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'];
就这样。没有更多的方法可用。
这取决于您如何从数据库返回结果。
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
您的问题表明您的目标只是获得单一价值。如果是这种情况,您应该将查询限制为仅返回您要查找的内容而不是获取所有内容,然后使用PHP在结果中找到您想要的内容。
对于列,指定所需的一列而不是使用*
,(SELECT one_column FROM your_table)
和行,使用WHERE
子句选择特定的id(假设在表上定义)或使用LIMIT
子句选择特定的结果集中的行号。然后您不必获取循环或获取所有。您的查询结果(如果成功)将只有一行有一列,您可以获取一次并获取您的值。
当然,如果你需要反复这样做(即在循环中),这不是最好的方法。