下面是我的代码,我不能解决这个错误。任何帮助是感激的。我正在尝试更新我的数据库中的一个表。
public function updateUnit($params){
$user = 'monil';
$password = 'Masters123';
$dbh = new \PDO('mysql:host=127.0.0.1;dbname=tcsdb', $user, $password);
$task=array(':UnitCode'=>$params['UnitCode'],':UnitDescription'=>$params['UnitDescription'] ,
':UnitName'=>$params['UnitName'], ':UnitID'=>$params['UnitID']);
echo $params['UnitID'];
$sth = $dbh->prepare('UPDATE unit SET UnitCode = :UnitCode,'
. 'UnitDescription = :UnitDescription,UnitName = :UnitName WHERE UnitId=:UnitId');
$sth->execute($task);
return true;
}
3条答案
按热度按时间qvtsj1bj1#
execute()/binding中使用的参数名应该与SQL查询中使用的参数名完全匹配,这就是命名参数的意义所在。
您需要检查SQL中的每个占位符,看其名称是否与execute()、bindParam()或bindValue()中使用的名称匹配。
在您的示例中,
:UnitID
与:UnitId
不同,字母大小写不同。在极少数情况下,错误可能是由占位符名称不正确引起的。只允许使用
[a-zA-Z0-9_]
字符。vnzz0bqm2#
当您错过以下内容时,会出现相同的错误:创建语句时使用冒号。
例如:以下语句抛出无效参数错误,因为VALUES中缺少密码:冒号。
qc6wkl3g3#
如果在bindParam中使用.””点,也可能发生相同的错误
例如