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

PHP PDO执行UPDATE报HY093参数数量不匹配错误如何解决

问题原因
  • 错误日志中的SQLSTATE[HY093]报错,本质是SQL语句内的占位符数量和实际绑定的参数数量不一致
  • 你编写的updateRequest方法的UPDATE语句里,WHERE条件使用了命名占位符:R_id,但后续参数绑定环节仅绑定了9个业务字段参数,既没有对R_id做数据清洗,也没有绑定:R_id对应的参数,导致参数计数不匹配,SQL执行失败。
修复步骤

修改Req.php中updateRequest方法的代码,补充R_id的清洗和绑定逻辑:

  1. 在业务字段数据清洗代码后,新增R_id的清洗逻辑
  2. 在参数绑定代码末尾,新增:R_id的绑定逻辑

修改后的完整updateRequest方法代码如下:

// 更新请求
public function updateRequest(){
    $sqlQuery = "UPDATE
                ". $this->db_table ."
            SET
                F_Name = :F_Name, 
                L_NAme = :L_NAme, 
                Mobile_No = :Mobile_No, 
                Email = :Email, 
                Website = :Website,
                Services_Type = :Services_Type, 
                Services_List = :Services_List, 
                Contact_time = :Contact_time, 
                Request_Describtion = :Request_Describtion
            WHERE 
                R_id = :R_id";

    $stmt = $this->conn->prepare($sqlQuery);

    $this->F_Name=htmlspecialchars(strip_tags($this->F_Name));
    $this->L_NAme=htmlspecialchars(strip_tags($this->L_NAme));
    $this->Mobile_No=htmlspecialchars(strip_tags($this->Mobile_No));
    $this->Email=htmlspecialchars(strip_tags($this->Email));
    $this->Website=htmlspecialchars(strip_tags($this->Website));
    $this->Services_Type=htmlspecialchars(strip_tags($this->Services_Type));
    $this->Services_List=htmlspecialchars(strip_tags($this->Services_List));
    $this->Contact_time=htmlspecialchars(strip_tags($this->Contact_time));
    $this->Request_Describtion=htmlspecialchars(strip_tags($this->Request_Describtion));
    // 新增R_id清洗逻辑
    $this->R_id=htmlspecialchars(strip_tags($this->R_id));


    // 绑定参数
    $stmt->bindParam(":F_Name", $this->F_Name);
    $stmt->bindParam(":L_NAme", $this->L_NAme);
    $stmt->bindParam(":Mobile_No", $this->Mobile_No);
    $stmt->bindParam(":Email", $this->Email);
    $stmt->bindParam(":Website", $this->Website);
    $stmt->bindParam(":Services_Type", $this->Services_Type);
    $stmt->bindParam(":Services_List", $this->Services_List);
    $stmt->bindParam(":Contact_time", $this->Contact_time);
    $stmt->bindParam(":Request_Describtion", $this->Request_Describtion);
    // 新增R_id绑定逻辑
    $stmt->bindParam(":R_id", $this->R_id);

    if($stmt->execute()){
       return true;
    }
    return false;
}

修改完成后重新测试接口即可正常执行更新操作。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:48:03