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

编写PHP PDO更新查询时触发500错误,请求技术协助

解决PHP PDO更新查询的500错误问题

你的代码触发500错误的核心原因及修复方案如下:

  • 缺少UPDATE语句必填参数的绑定
    你编写的SQL更新语句中,SET部分声明了:title、:body、:category_id三个占位符,但代码仅绑定了:post_id,PDO执行时无法找到这三个参数的值,直接触发致命错误。

    • 若只是测试查询是否能匹配到目标post,可暂时简化SQL:
      $sql = "UPDATE posts SET updated_at = NOW() WHERE post_id = :post_id";
      
    • 若为实际更新操作,需先获取这些字段的值(比如从表单提交),再绑定所有参数:
      // 假设从POST表单获取更新数据
      $title = $_POST['title'];
      $body = $_POST['body'];
      $category_id = $_POST['category_id'];
      
      $sql = "UPDATE posts SET title = :title, body = :body, category_id = :category_id WHERE post_id = :post_id";
      $query = $db->prepare($sql);
      // 绑定所有占位符参数
      $query->bindParam(':title', $title);
      $query->bindParam(':body', $body);
      $query->bindParam(':category_id', $category_id);
      $query->bindParam(':post_id', $id);
      $query->execute();
      
  • 跳转后未终止代码执行
    在if(!is_numeric($id))判断后,执行header('Location: question.php')但未添加exit();,后续代码仍会继续运行,可能引发额外错误。修正后:

    if(!is_numeric($id)) {
        header('Location: question.php');
        exit();
    }
    
  • 开启PDO错误调试
    500错误属于服务器端致命错误,开启PDO的错误模式能直接查看具体错误信息,便于排查问题。在数据库连接完成后添加:

    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    

修正后的完整测试用代码:

<?php
if(!isset($_GET['id'])) {
    header('Location: question.php');
    exit();
} else {
    $id = $_GET['id'];
}

require_once('./includes/connection.php');
// 开启PDO错误提示
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

if(!is_numeric($id)) {
    header('Location: question.php');
    exit();
}

// 简化SQL用于测试匹配post_id
$sql = "UPDATE posts SET updated_at = NOW() WHERE post_id = :post_id";
$query = $db->prepare($sql);
$query->bindParam(':post_id', $id);
$query->execute();
?>
<?php include 'header.php';?>
<div><?php echo $id ?></div>
<?php include 'footer.php';?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:50:22