为什么我看到"无效的参数编号"使用命名参数时出错?

时间:2015-08-29 19:10:07

标签: php mysql pdo

我在使用PDO执行此SQL查询时遇到此错误:

  

参数号无效:未定义参数。

我无法在代码中看到需要更改的内容。

这是我的代码:

$req = $this->manager->dao->prepare('UPDATE pronostics 
                                SET draw_lottery = :drawLottery, result_rank = :resultRank
                                WHERE draw_date = :drawDate AND id_user = :IdUser 
                                AND lottery_name = :lotteryName');

$req->bindParam(':idUser', $idUser, PDO::PARAM_INT);
$req->bindParam(':drawLottery', $drawLottery, PDO::PARAM_STR);
$req->bindParam(':resultRank', $resultRank, PDO::PARAM_INT);
$req->bindParam(':drawDate', $drawDate, PDO::PARAM_STR);        
$req->bindParam(':lotteryName', $lotteryName, PDO::PARAM_STR);
$req->execute();

你能告诉我哪个参数丢失了吗?

2 个答案:

答案 0 :(得分:2)

:idUser字符串区分大小写,因此bindParam必须以相同的方式在查询和$req = $this->manager->dao->prepare('UPDATE pronostics SET draw_lottery = :drawLottery, result_rank = :resultRank WHERE draw_date = :drawDate AND id_user = :idUser AND lottery_name = :lotteryName'); $req->bindParam(':idUser', $idUser, PDO::PARAM_INT); $req->bindParam(':drawLottery', $drawLottery, PDO::PARAM_STR); $req->bindParam(':resultRank', $resultRank, PDO::PARAM_INT); $req->bindParam(':drawDate', $drawDate, PDO::PARAM_STR); $req->bindParam(':lotteryName', $lotteryName, PDO::PARAM_STR); $req->execute(); 参数中大写。

{{1}}

答案 1 :(得分:0)

UPDATE查询中,您说AND id_user = :IdUser,而在定义参数时名称不同,可以看作$req->bindParam(':idUser'。我相信这是错误的。它应与查询$req->bindParam(':IdUser'

中提到的相同