PDO UPDATE语句未更新数据库且无报错问题求助
问题分析与修复方案
核心问题:SQL更新逻辑错误
你的UPDATE语句写法完全错误:UPDATE stock_list SET quantity=:quantity+'$quantity' WHERE id=:id这里你错误地将绑定参数
:quantity与POST变量$quantity直接相加,且没有引用数据库中原有库存值做累加。正确逻辑应该是把数据库已有的quantity字段值加上新输入的数量,写法应为:UPDATE stock_list SET quantity = quantity + :quantity WHERE id=:id额外问题:参数绑定与变量混用的风险
你同时混用PDO绑定参数和直接插入PHP变量$quantity,不仅逻辑混乱,还存在SQL注入风险。必须统一使用参数绑定,杜绝直接拼接变量到SQL语句中。次要问题:数据库连接对象不一致
代码中用$conn->prepare()创建语句,但最后调用$pdo->close()关闭连接,两个对象不一致,可能导致连接无法正确关闭,建议统一使用同一个连接对象(取决于你session.php里定义的连接变量)。
修复后的完整代码
<?php include 'includes/session.php'; if(isset($_POST['edit'])){ $id = $_POST['id']; $name = $_POST['name']; $quantity = $_POST['quantity']; try{ $stmt = $conn->prepare("UPDATE stock_list SET quantity = quantity + :quantity WHERE id=:id"); $stmt->execute(['quantity' => $quantity, 'id' => $id]); $_SESSION['success'] = 'Stock updated successfully'; } catch(PDOException $e){ $_SESSION['error'] = $e->getMessage(); } $conn->close(); } else{ $_SESSION['error'] = 'Fill up edit Stock form first'; } header('location: stockin.php'); ?>
内容的提问来源于stack exchange,提问作者Sencho
相关产品推荐
相关产品推荐

