首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP PDO/Transaction Update Statmement产生错误(SQLSTATE[HY093]:无效参数编号:未定义参数)

PHP PDO/Transaction Update Statmement产生错误(SQLSTATE[HY093]:无效参数编号:未定义参数)
EN

Stack Overflow用户
提问于 2019-05-22 03:22:20
回答 1查看 56关注 0票数 0

在以下函数中,我有两个update语句。第一个函数执行得很好,但第二个函数就不行了,它会产生一个错误(无效的参数编号)。阈值是浮点数(例如,0.55,最多两位数),而似然和结果是整数)。

如何更正我的代码以不产生此错误?

public function updateAll($params = [])
{
    $sql = "update
            risklevels
            set
                riskmaximum = :riskmaximum,
                riskhigh = :riskhigh,
                riskmedium = :riskmedium,
                riskminimum = :riskminimum
            where risklevelid = 1";

    $sql2 = "update
             riskmatrixthresholds
             set 
                level = :level
             where likelihood = :likelhood
             and consequence = :consequence";
    try
    {    
        $this->db->beginTransaction();  
        $statement = $this->db->prepare($sql);
        $statement->bindValue(':riskmaximum', $params['Levels']['riskmaximum']);
        $statement->bindValue(':riskhigh' , $params['Levels']['riskhigh']);
        $statement->bindValue(':riskmedium' , $params['Levels']['riskmedium']);
        $statement->bindValue(':riskminimum' , $params['Levels']['riskminimum']);

        $statement->execute(); 

        for ($l = 1; $l <= 5; $l++)
        {
            for($c = 1; $c <= 5; $c++)
            {
                $threshold = $params['Thresholds'][$l][$c];
                $statement2 = $this->db->prepare($sql2);  
                $statement2->bindValue(':level', $threshold);
                $statement2->bindValue(':likelihood', $l);
                $statement2->bindValue(':consequence', $c);
                $statement2->execute();
            }
        }
        $this->db->commit();

        return ["Succeeded" => true, "Result" => "Risk Configuration Updated!"];
    }
    catch (\PDOException $e)
    {
        return ["Succeeded" => false, "Result" => $e->getMessage()];
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-22 03:26:06

您的一个SQL变量拼写错误。

where likelihood = :likelhood更改为where likelihood = :likelihood

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56245126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档