我需要做的是从数据库中收集每一行并将其放入自己的数组中
我以为类似于$ row [1] [1](例如$ row [row number] [column number]),我尝试过此操作
$query = "SELECT * FROM `table`;";
$result = mysqli_query($link, $query);
$Array = array();
$index = 0;
while($row = mysqli_fetch_assoc($result)) {
$Array[$index] = $row;
$index++;
}
echo $row[1][1];
但是回声似乎根本不起作用,我也不知道它出了什么问题?我已经尝试修复了大约2个小时,最终放弃了
在您的情况下,由于您正在使用mysqli_fetch_assoc()
,因此它将循环遍历表字段的所有行,并且如果将其放入$row
循环中,则变量while
将具有与当前行关联的数组。如果要在while
循环之外访问该数组,则可以使用上面创建另一个数组的方法。在这种情况下,您仍然需要按名称引用该字段:
<?php
$query = "SELECT * FROM `table`";
$result = mysqli_query($link, $query);
$Array = array();
?>
<pre>
<?php
while($row = mysqli_fetch_assoc($result)) {
$Array[] = $row;
}
print_r($Array[1]['your_field']);
?>
</pre>
其他人已经声明,如果使用mysqli_fetch_assoc()
,则会得到一个关联数组(按列名称索引)。
如果改为使用mysqli_fetch_row($result),或者如果使用mysqli_fetch_array($result, MYSQLI_NUM),则可以获得整数索引的数组。
您还可以简化代码,因此,如果使用mysqli_fetch_all($result, MYSQLI_NUM),则不必编写自己的while循环。该函数返回一个数组数组,就像您描述的一样。
您可以简单地使用fetch_all()
。例如:
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = new mysqli('localhost', 'username', 'password', 'databaseName');
$link->set_charset('utf8mb4'); // always set the charset
$query = "SELECT * FROM `table` ";
$result = $link->query($query); // If variables are involved you must use prepare/bind_param/execute
$matrixOfRowsAndCols = $result->fetch_all();
echo $matrixOfRowsAndCols[1][1];
默认的获取样式是数值数组,因此您将获得数值列索引和数值行索引。不需要任何循环。