首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用php和while循环打印从mysql db中选择的数据表。

使用php和while循环打印从mysql db中选择的数据表。
EN

Stack Overflow用户
提问于 2021-09-29 18:06:14
回答 1查看 968关注 0票数 0

我是新在php,并试图学习CRUD应用程序。对于这部分代码,我在数据库(mysql)中设置了一个表。我正试着和桌子互动。我希望用户登录(这部分有效),当他们登录时,我会在$_SESSION中存储一条消息,上面写着ie。“成功”。这让我知道用户已经登录了。不是问题所在。第二部分是,如果表中已经有行(来自以前的会话),我希望在表中打印出这些行。如果没有行,我想打印出“无行”

在这里,我尝试使用简单的逻辑,首先通过从一个pdo对象(也可以)进行一个提取来创建$row变量。如果那一行是真的.它存在,打印表格。如果该行为false,则不打印任何行。然而,我一直把整张桌子印出来,比如说5次。而不是表中的5行。

另外,我不确定我是否使用了正确类型的while ()语句。现在看上去,

时间($row = $stmt->fetch(PDO::FETCH_ASSOC))

然后我得到整个表和所有行5次。fetch和PDO::FETCH_ASSOC对我来说有点不清楚,我把$row理解为真或假。

代码语言:javascript
复制
$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";
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-29 18:18:36

我一直把整张桌子印出来,比如说5次。

因为您要在循环的每一次迭代中打印整个表:

代码语言:javascript
复制
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
  echo ('<table border="1">'."\n");
  // etc.

与其检查第一行是否为真,不如检查行计数:

代码语言:javascript
复制
$stmt= $pdo->query("SELECT make, model, year, mileage from autos");
$count = $stmt->rowCount();

if (   isset($_SESSION['success']) && $count > 0  )

然后将表输出到循环之外,然后只输出循环中的每一行:

代码语言:javascript
复制
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");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69381428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档