猿问

PHP PDO/事务更新语句产生错误

在下面的函数中,我有两个更新语句。第一个执行得很好,但第二个没有执行,产生一个错误(无效的参数号)。阈值是浮点数(例如 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()];

    }

}


临摹微笑
浏览 116回答 1
1回答

小唯快跑啊

您拼错了 SQL 变量之一。更改where likelihood = :likelhood为where likelihood = :likelihood
随时随地看视频慕课网APP
我要回答