我有一个名为members 3行的表。以下代码尝试显示members表中的所有行。它显示1次1记录,而不是显示每个记录一次。
<?php
$con = new mysqli("localhost", "root", "jce123", "profile");
if (mysqli_connect_errno()) {
printf("Connection failed: %s\n", mysqli_connect_error());
exit();
}
$sql = "SELECT * FROM members";
$res = mysqli_query($con,$sql);
$num = mysqli_num_rows($res);
$array = mysqli_fetch_assoc($res);
$keysarray = array_keys($array);
$valuearray = array_values($array);
for ($i=0; $i < $num; $i++) {
for($j = 0; $j < count($array); $j++) {
echo "<table>";
echo "<tr><td>".$keysarray[$j].": </td><td>".$valuearray[$j]."</td></tr>";
echo "</table>";
}
echo "<br><br>";
}
mysqli_close($con);
?>
我已根据建议对此进行了更新:
$sql = "SELECT * FROM members";
$res = mysqli_query($con,$sql);
$num = mysqli_num_rows($res);
$array = mysqli_fetch_assoc($res);
while ($row = mysqli_fetch_assoc($res)) {
foreach($array as $key => $value){
echo "<table>";
echo "<tr><td>".$key.": </td><td>".$value."</td></tr>";
echo "</table>";
}
echo "<br><br>";
}
答案 0 :(得分:1)
那是因为,$ num = 3,count($ array)= 3且外部for循环对内循环没有影响。
答案 1 :(得分:0)
任何基础教程都会告诉你这个。甚至PHP docs也提供了一个例子。
答案 2 :(得分:0)
如果您拥有$array = mysqli_fetch_assoc($res);
,则只会从数据库中收到一行。你需要这样的东西:
while ($row=mysqli_fetch_assoc($res))
{
// processing for each row
}
答案 3 :(得分:0)
你可以使用这样的东西..
while ($row=mysqli_fetch_assoc($res))
{
// processing for each row
e.g
echo $row['id'];
echo $row['name'];
etc
}
答案 4 :(得分:0)
试试这个...代码的和平没有经过测试,只是为了给你一个想法......
$sql = "SELECT * FROM members";
$res = mysqli_query($con,$sql);
$num = mysqli_num_rows($res);
while ($row = mysqli_fetch_assoc($res)) {
echo "<table>";
echo '<tr><td> id = "'.$row['id'].'":
</td><td> name = "'.$row['name'].'"</td></tr>";
echo "</table>";
}