使用下拉列表时SQL Update语句无法更新产品分类问题
问题解决:产品分类无法更新的原因及修复方案
嘿,这问题很常见,我帮你梳理一下问题点和修复步骤:
核心问题:更新逻辑遗漏了分类ID的处理
你的update2.php里完全没处理前端传过来的分类ID(c_id)——既没从POST参数里获取它,也没把它包含到UPDATE的SQL语句中,自然数据库里的c_id字段不会更新。
修复步骤(针对update2.php)
获取前端传递的分类ID
在获取$name和$quantity的位置,加上一行代码获取c_id:$c_id = $_POST['c_id'];修改UPDATE SQL语句,加入c_id的更新
把原来的SQL语句改成包含c_id字段的版本:$sql = "UPDATE product set name = ?, quantity = ?, c_id = ? WHERE id = ?";执行SQL时传入c_id参数
调整execute的参数数组,把$c_id加进去:$q->execute(array($name,$quantity,$c_id,$id));
额外小问题:update.php里的数据库连接提前断开
在你的update.php里,你在获取产品详情后立刻调用了Database::disconnect();,但后面获取分类列表的时候还在使用$pdo,这会导致报错!你需要把Database::disconnect();移到页面的最末尾,比如在</form>标签之后:
<?php include 'database.php'; $id = $_POST['productId']; $pdo = Database::connect(); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "SELECT * FROM product where id = ?"; $q = $pdo->prepare($sql); $q->execute(array($id)); $data = $q->fetch(PDO::FETCH_ASSOC); $name = $data['name']; $quantity = $data['quantity']; // 这里不要断开连接! ?> <form id="updateFrom" action="update2.php" method="POST"> <!-- 表单内容保持不变 --> </form> <?php // 现在才断开连接 Database::disconnect(); ?>
这样修改之后,产品分类的更新就能正常工作啦!
内容的提问来源于stack exchange,提问作者Αναστασια Όλιβερ
相关产品推荐
相关产品推荐

