【发布时间】:2021-11-21 15:48:11
【问题描述】:
我是 php 新手,正在尝试学习 CRUD 应用程序。对于这部分代码,我在数据库(mysql)中设置了一个表。我正在尝试与桌子互动。我希望用户登录(该部分有效)并且当他们登录时 - 我在 $_SESSION 中存储一条消息,上面写着 ie。 '成功'。这让我知道用户已登录。不是问题。第二部分是如果表中已经有行(来自以前的会话),我想在表中打印出这些行。如果没有行我想打印出“No rows”
我在这里尝试使用简单的逻辑,首先我通过执行来自 pdo 对象的提取来创建 $row 变量(也可以)。如果该行是 TRUE 即。它存在,打印表格。如果该行为假,则不打印任何行。但是,我不断打印整张桌子,比如说 5 次。而不是表格中的 5 行。
另外,我不确定我使用了正确类型的 while () 语句。现在的内容是,
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
然后我得到整个表和所有行 5 次。 fetch 和 PDO::FETCH_ASSOC 对我来说有点不清楚,我理解 $row 是真还是假。
$stmt= $pdo->query("SELECT make, model, year, mileage from autos");
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if ( isset($_SESSION['success']) && $row == true ) {
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
echo ('<table border="1">'."\n");
echo "<tr><td>";
echo "Make";
echo ("</td><td>");
echo "Model";
echo ("</td><td>");
echo "Year";
echo ("</td><td>");
echo "Mileage";
echo ("</td><td>");
echo "Action";
echo ("</td></tr>");
echo "<tr><td>";
echo (htmlentities($row['make']));
echo ("</td><td>");
echo (htmlentities($row['model']));
echo ("</td><td>");
echo (htmlentities($row['year']));
echo ("</td><td>");
echo (htmlentities($row['mileage']));
echo ("</td><td>");
echo ('<a href="edit.php?user_id='.$row['user_id'].'">Edit</a>'.'/'.'<a
href="delete".php?user_id='.$row['user_id'].'>Delete</a>');
echo "</td></tr>";
}
} elseif ( isset($_SESSION['success']) && $row == false ){
echo "No rows found";
}
【问题讨论】:
-
将
<table>和标题移出while循环。将它们放在循环之前和之后,您需要关闭</table>。 -
啊啊啊就是这么简单。谢谢
-
另外,删除第一个
fetch并使用$count =$stmt->rowCount()并在if中使用$count或其他内容。 -
实际上在循环之前只需使用
$rows = $stmt->fetchAll并检查if然后foreach($rows。