Php 如何遍历表中的行
我有一个名为members的表,有3行。以下代码尝试显示members表中的所有行。它将第一条记录显示3次,而不是每个记录显示一次Php 如何遍历表中的行,php,mysql,Php,Mysql,我有一个名为members的表,有3行。以下代码尝试显示members表中的所有行。它将第一条记录显示3次,而不是每个记录显示一次 <?php $con = new mysqli("localhost", "root", "jce123", "profile"); if (mysqli_connect_errno()) { printf("Connection failed: %s\n", mysqli_connect_error()); exit(); } $sq
<?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>";
}
$sql=“从成员中选择*”;
$res=mysqli\u查询($con,$sql);
$num=mysqli\u num\u行($res);
$array=mysqli\u fetch\u assoc($res);
while($row=mysqli\u fetch\u assoc($res)){
foreach($key=>$value的数组){
回声“;
回显“$key.”:“$value.”;
回声“;
}
回声“
”;
}
任何基础教程都会告诉你这一点。甚至连数据库也提供了一个例子。其中有$array=mysqli\u fetch\u assoc($res)代码>,您将只收到数据库中的一行。你需要像这样的东西:
while ($row=mysqli_fetch_assoc($res))
{
// processing for each row
}
这是因为,您的$num=3,count($array)=3,外部for循环与内部for循环没有关系。您可以使用
while ($row=mysqli_fetch_assoc($res))
{
// processing for each row
e.g
echo $row['id'];
echo $row['name'];
etc
}
试试这个。。。这种代码的平静不是经过测试的,只是为了给你一个想法
$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>";
}
$sql=“从成员中选择*”;
$res=mysqli\u查询($con,$sql);
$num=mysqli\u num\u行($res);
while($row=mysqli\u fetch\u assoc($res)){
回声“;
echo'id=“”.$row['id'].'”:
name=“.”.$row['name']”;
回声“;
}
为什么不使用foreach在$array变量上迭代一次,而不是嵌套for循环呢?此外,应该不鼓励使用mysql和mysqli函数,而是使用PDOI foreach($array as$key=>$value)它简化了很多事情,但我仍然输出了3次第一条记录。我想学习OOP方法,但今天上午需要完成。@JasonFingar:MySQLi(相对而言)很好,因为它修复了ext/mysql留下的巨大的安全性和功能漏洞。我个人更喜欢PDO,但没有真正重要的理由去移动。我理解这一点,但仍然不知道如何处理表中的行。我确信一定有某种构造将表表示为记录数组/rowsThanks,以供尝试给我两次第一行。您仍然在循环中引用$array,这只是一行。请在$row上迭代:foreach($key=>$value){
我再次查看了这一点,并将代码更改为:while($row=mysqli_fetch_assoc($res)){foreach($key=>$value){echo”“;echo”“$key”“:“$value。”“回声”;}现在剩下的唯一问题是如何让第一条记录显示你的循环中有标记,因此你有效地为每一行创建了一个表。你应该用and环绕你的循环。是的,它会为每条记录创建一个新表,并在外部循环中的表之间创建两个空格,这很好。在你的帮助下,一切都会好起来现在,除了第一条记录,第二条和第三条记录没有被写入。