点击提交按钮后数据库未更新,求排查PHP代码问题
问题排查与修复方案
嘿,我一眼就看到核心问题啦——你只是定义了UPDATE的SQL语句,但根本没让PHP去执行这条语句!这就像你把菜谱写好了,却没开火下锅一样😉
咱们一步步来修复:
1. 核心问题:缺少SQL执行代码
你的代码里只写了$sql = "UPDATE accounts SET download='Yes' WHERE id=15 ";,但没有调用数据库扩展的执行方法(比如mysqli_query或者PDO的相关方法),数据库根本不知道你要执行这条指令。
2. 修复后的完整代码(分两种常见数据库扩展)
如果你用的是MySQLi扩展(面向过程)
假设你已经用$conn = mysqli_connect(主机名, 用户名, 密码, 数据库名);完成了数据库连接:
<?php // 假设你已经在这里完成了数据库连接,比如: // $conn = mysqli_connect('localhost', 'root', 'your_password', 'your_db'); if (isset($_POST['update'])){ $sql = "UPDATE accounts SET download='Yes' WHERE id=15 "; // 关键:执行SQL语句 if(mysqli_query($conn, $sql)){ echo "数据库更新成功!"; } else { // 错误排查:输出错误信息帮你定位问题 echo "更新失败:" . mysqli_error($conn); } } ?> <!DOCTYPE html> <html> <head> </head> <body> <form method="post" > <input type="submit" value="Update " name="update"> </form> </body> </html>
如果你用的是PDO扩展
假设你已经用$pdo = new PDO('mysql:host=localhost;dbname=your_db', 'root', 'your_password');完成了连接:
<?php // 假设你已经在这里完成了PDO连接,比如: // $pdo = new PDO('mysql:host=localhost;dbname=your_db', 'root', 'your_password'); // $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 开启错误模式方便排查 if (isset($_POST['update'])){ $sql = "UPDATE accounts SET download='Yes' WHERE id=15 "; // 关键:执行SQL语句 try { $stmt = $pdo->exec($sql); if($stmt > 0){ echo "数据库更新成功!"; } else { echo "没有数据被更新(可能id=15的记录不存在?)"; } } catch(PDOException $e) { echo "更新失败:" . $e->getMessage(); } } ?> <!DOCTYPE html> <html> <head> </head> <body> <form method="post" > <input type="submit" value="Update " name="update"> </form> </body> </html>
3. 额外排查点
- 确认你的数据库连接代码是正确的,且在这段代码之前就已经执行了(没有连接的话,执行SQL肯定会失败)
- 检查
accounts表中是否真的存在id=15的记录(如果这条记录不存在,SQL会执行成功但不会有任何数据变化) - 确保你的数据库用户拥有
UPDATE该表的权限
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

