【发布时间】:2019-10-08 06:02:30
【问题描述】:
在以下函数中,我有两个更新语句。第一个执行良好,但第二个没有,产生错误(无效参数号)。 Threshold 是浮点数(例如 0.55,最多两位数),而 Likelihood 和 Consequence 是整数)。
如何更正我的代码以不产生此错误?
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()];
}
}
【问题讨论】:
-
你打错了,你的查询中的参数叫
:likelhood而不是:likelihood -
当您使用变量但未为其定义值时会发生此错误。在这种情况下,
:likelhood没有定义,但:likelihood是