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

PHP在线订餐系统菜品提交未入库且管理页不显示问题求助

问题原因

代码存在3个核心错误导致数据无法写入、写入后也无法展示:

  1. 新增菜品的INSERT SQL语法错误
    在manage_dish.php的插入语句里多了2个多余的逗号:
    原错误代码:
mysqli_query($con,"insert into dish(category_id,dish,dish_detail,status,added_on,) values('$category_id','$dish','$dish_detail',1,'$added_on,')");

字段列表added_on后面多了逗号,值列表'$added_on'后面也多了逗号,SQL语法错误直接导致插入操作执行失败。
2. 分类选择的必填校验失效
你把下拉框的required属性错误写到了</option>结束标签里,导致就算用户不选分类也能提交表单,插入的category_id为空。而菜品管理页用的是内连接查询dish,category where dish.category_id=category.id,空的category_id无法匹配到分类表数据,就算插入成功也不会在列表里展示。
3. 没有加SQL执行错误校验,插入失败后直接跳转到列表页,看不到报错信息无法定位问题。


修复方案

  1. 修复INSERT语句的语法错误,删除多余的逗号:
// 修正后的插入语句
mysqli_query($con,"insert into dish(category_id,dish,dish_detail,status,added_on) values('$category_id','$dish','$dish_detail',1,'$added_on')");
  1. 修正分类下拉框的必填属性位置,把required放到select标签上,同时补充编辑状态下分类自动选中的逻辑:
<!-- 修正后的下拉框代码 -->
<select class="form-control" name="category_id" required>
    <option value="">Select Category</option>
    <?php
    while($row_category=mysqli_fetch_assoc($res_category)){                           
        $selected = $row_category['id']==$category_id ? 'selected' : '';
        echo "<option value='".$row_category['id']."' $selected>".$row_category['category']."</option>";  
    }
    ?>
</select>
  1. 给SQL执行添加错误校验,方便后续定位问题:
    可以在所有mysqli_query执行后加错误判断,比如:
$res = mysqli_query($con,$sql);
if(!$res){
    die("SQL执行错误:".mysqli_error($con));
}
  1. 修复编辑状态下菜品详情不回填的问题,给textarea加上默认值:
<textarea name="dish_detail" class="form-control" placeholder="Dish Details" required><?php echo $dish_detail?></textarea>

修复后提交表单即可正常写入数据,列表页也能正常展示新增菜品。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:06:03