我想显示数组,在数组[0]显示后,显示下一个数据,在显示数据库中的所有数据之前循环执行。例如:
Array (
[0] => Array (
[ID] => 1 [name] => peter [time] = >1:00
)
[1] => Array (
[ID] =>2 [name]=> merry [time]=>3:00
)
...etc
我希望:
-------------- |id|name |time|
-------------- |1 |peter|1:00|
-------------- |2 |merry|3:00|
-------------- |..|.....|.:..|
但实际只是显示数组[0]。像这样:
-------------- |id|name |time|
-------------- |1 |peter|1:00|
---------------
你能告诉我如何改进和纠正吗?
$sql = "SELECT * FROM mytable";
$result = mysqli_query($conn, $sql);
$datas = array();
if (mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_assoc($result)){
$datas[] = $row;
}
}
$result = $conn->query($sql);
$x = 0;
$a = $datas[$x];
if($a = array())
{
echo "";
}
else
{
foreach($datas[$x] as $data){
echo $data."<td>"."<br>";
$x++;
}
}
您的代码中有很多问题:
-
$result = $conn->query($sql)
是多余的——几天前您已经运行了完全相同的查询。 -
if($a = array())
毫无意义。我想你可能是在测试$a是否绝对是一个数组?但你真正要做的是给它分配一个新的空数组。无论如何,这都无关紧要,因为你从来不会用$a做任何事情,而且我们知道$data永远是一个数组,所以没有必要检查它是否是一个阵列。如果没有行,循环就不会运行。 -
写入
"<td>"."<br>"
将生成无效的HTML。要么使用表和行,要么只使用换行符。你需要下定决心。表格可能更适合呈现表格数据。。。 -
对于您的问题,最重要的是,
$datas[$x]
只代表$datas
中的第一个数据数组。循环只在第一个数组中的项上循环。您需要循环使用$datas
中的所有索引。
以下是您的代码的固定版本:
$sql = "SELECT * FROM mytable";
$result = $conn->query($sql);
$datas = array();
if (mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_assoc($result)){
$datas[] = $row;
}
}
echo "<table>"; //start a table
echo "<tr><th>ID</th><th>Name</th><th>Time</th></tr>"; //print the table header
foreach($datas as $row) //loop over all the rows
{
echo "<tr>"; //start a new row
foreach ($row as $field) //loop over the fields in each row.
{
echo "<td>".$field."</td>"; //print a single field in a table cell
}
echo "</tr>"; //end the row
}
echo "</table>"; //end the table