0
我有这个功能,如果我只有一个参数,它工作正常。 但是,如果我有多个我得到上述错误。SQLSTATE [42000]:语法错误或访问冲突:更新时为1064
version for the right syntax to use near 'usr_lastname','usr_login'='firstname','lastname' at line 1 in
public function updateById($id, $data)
{
#print_r($data);
foreach ($data as $field => $value){
$fields[] = '`'.$field.'`';
$targets[] = ':'.$field;
$values[] = $value;
}
$stmt = $this->db->prepare("UPDATE ".$this->table." SET ".join(',', $fields)."=".join(',', $targets)." WHERE id = $id");
foreach ($targets as $pos => $target){
switch (true){
case is_int($values[$pos]) : $type = PDO::PARAM_INT; break;
case is_bool($values[$pos]) : $type = PDO::PARAM_BOOL; break;
case is_string($values[$pos]) : $type = PDO::PARAM_STR; break;
case is_null($values[$pos]) : $type = PDO::PARAM_NULL; break;
default : $type = PDO::PARAM_STR; break;
}
$stmt->bindValue($target, $values[$pos], $type);
print_r($stmt);
}
$stmt->execute();
$json = array(
'success' => true,
'result' => $value
);
echo json_encode($json);
}
我不看任何 “” 错误。
任何建议我错了或失踪?
感谢您的帮助。
非常感谢马克! 这解决了我的问题,并缩短了更新查询中的代码! – ToTe