将 MySQL 行转换为单独的数组
Turning MySQL Rows Into Individual Arrays
我需要做的是从我的数据库中收集每一行并将每一行放入它自己的数组中
我想像 $row[1][1](例如 $row[行号][列号]),我尝试了这个
$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];
但是echo好像一点作用都没有,不知道是哪里出错了?我一直在尝试修复它大约 2 个小时,最后放弃了
在你的例子中,因为你使用的是 mysqli_fetch_assoc()
它将遍历 table 字段的所有行并且变量 $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) instead, or if you use mysqli_fetch_array($result, MYSQLI_NUM).
,你可以获得一个整数索引数组
您还可以简化代码,这样在使用 mysqli_fetch_all($result, MYSQLI_NUM) 时就不必编写自己的 while 循环。该函数 returns 一个数组的数组,就像您描述的那样。
您可以简单地使用 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];
默认的获取样式是数字数组,因此您将获得数字列索引和数字行索引。不需要任何循环。
我需要做的是从我的数据库中收集每一行并将每一行放入它自己的数组中
我想像 $row[1][1](例如 $row[行号][列号]),我尝试了这个
$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];
但是echo好像一点作用都没有,不知道是哪里出错了?我一直在尝试修复它大约 2 个小时,最后放弃了
在你的例子中,因为你使用的是 mysqli_fetch_assoc()
它将遍历 table 字段的所有行并且变量 $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) instead, or if you use mysqli_fetch_array($result, MYSQLI_NUM).
,你可以获得一个整数索引数组您还可以简化代码,这样在使用 mysqli_fetch_all($result, MYSQLI_NUM) 时就不必编写自己的 while 循环。该函数 returns 一个数组的数组,就像您描述的那样。
您可以简单地使用 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];
默认的获取样式是数字数组,因此您将获得数字列索引和数字行索引。不需要任何循环。