You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何未提交form表单时无法展示database数据库的表格数据

问题根因
  • 菜单列表查询逻辑被包裹在if(isset($_POST['submit']))判断内,只有触发表单POST提交时才会执行查询并给$menus变量赋值
  • 刷新页面、新开页面访问均为GET请求,不会进入上述判断分支,$menus变量未定义,遍历的时候自然无法渲染数据表格
修复方案

把查询菜单列表的逻辑从POST判断分支中移出来,不管请求类型是GET还是POST都执行查询即可,修改后的SQL、数据库连接部分代码如下:

<?php 
include '../../database/db.php';
if(isset($_POST['submit'])){
    $title = $_POST['title'];
    $sort = $_POST['sort'];
    $result = $conn->prepare("INSERT INTO menu SET title=?, sort=?");
    $result->bindValue(1, $title);
    $result->bindValue(2, $sort);
    $result->execute();
}
// 列表查询逻辑移到POST判断外,所有请求场景都会执行
$all = $conn->prepare("SELECT * FROM menu");
$all->execute();
$menus = $all->fetchAll(PDO::FETCH_ASSOC);
?>
额外优化建议
  • 遍历$menus之前可以加一层非空判断,避免变量未定义抛出警告:
<?php if (!empty($menus)): ?>
<?php foreach ($menus as $menu): ?>
<tr>
  <td><?php echo $menu['title']; ?></td>
  <td><?php echo $menu['sort']; ?></td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
  • 表单提交后建议加302重定向到当前页,避免用户刷新页面重复提交数据:插入数据执行成功后添加header('Location: '.$_SERVER['REQUEST_URI']);exit;即可。

内容的提问来源于stack exchange,提问作者source changer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:09:03