0
이 함수가 있는데 하나의 매개 변수 만있는 경우 제대로 작동합니다. 하지만 둘 이상의 경우 위의 오류가 발생합니다.SQLSTATE [42000] : 구문 오류 또는 액세스 위반 : 업데이트시 1064
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);
}
version for the right syntax to use near 'usr_lastname','usr_login'='firstname','lastname' at line 1 in
어떤 제안이 잘못되었거나 누락 되었습니까?
도움 주셔서 감사합니다.
매우 마크를 주셔서 감사합니다! 그건 내 문제를 해결하고 업데이트 쿼리에서 코드를 단축! – ToTe