我的php crud(面向对象和pdo)更新不起作用。它显示了
致命错误:未捕获PDOException:SQLSTATE [HY093]:无效的参数编号:参数未定义。在$ stmtExec = $ stmt-> execute();
我试图更改变量以及参数,参数和间距,但是仍然得到无效的结果。我该如何解决?
public function updateId($fields, $stud_id) {
$st = "";
$counter = 1;
$total_fields = count($fields);
foreach($fields as $key => $value){
if($counter == $total_fields){
$set = "$key = :".$key;
$st = $st.$set;
} else {
$set = "$key = :".$key.", ";
$st = $st.$set;
$counter++;
}
}
$sql = "";
$sql.= "UPDATE students SET ".$st;
$sql.= "WHERE id = ".$stud_id;
$stmt = $this->connect()->prepare($sql);
foreach($fields as $key => $value){
$stmt->bindValue(':'.$key, $value);
}
$stmtExec = $stmt->execute();
//if successful
if($stmtExec){
header('Location: index.hp');
}
}
答案 0 :(得分:0)
如果我正确理解了您的代码,则需要在此处再放置一个空格:
$set = "$key = :".$key." ";
如果您错过该空格,则关键字WHERE
将成为您的最后一个参数名称的一部分。