我是新在php,并试图学习CRUD应用程序。对于这部分代码,我在数据库(mysql)中设置了一个表。我正试着和桌子互动。我希望用户登录(这部分有效),当他们登录时,我会在$_SESSION中存储一条消息,上面写着ie。“成功”。这让我知道用户已经登录了。不是问题所在。第二部分是,如果表中已经有行(来自以前的会话),我希望在表中打印出这些行。如果没有行,我想打印出“无行”
在这里,我尝试使用简单的逻辑,首先通过从一个pdo对象(也可以)进行一个提取来创建$row变量。如果那一行是真的.它存在,打印表格。如果该行为false,则不打印任何行。然而,我一直把整张桌子印出来,比如说5次。而不是表中的5行。
另外,我不确定我是否使用了正确类型的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";
}发布于 2021-09-29 18:18:36
我一直把整张桌子印出来,比如说5次。
因为您要在循环的每一次迭代中打印整个表:
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
echo ('<table border="1">'."\n");
// etc.与其检查第一行是否为真,不如检查行计数:
$stmt= $pdo->query("SELECT make, model, year, mileage from autos");
$count = $stmt->rowCount();
if ( isset($_SESSION['success']) && $count > 0 )然后将表输出到循环之外,然后只输出循环中的每一行:
echo ('<table border="1">'."\n");
// etc, output the table header
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
echo "<tr><td>";
// etc.
echo "</td></tr>";
}
echo ('</table>'."\n");https://stackoverflow.com/questions/69381428
复制相似问题