반응형
관리자가 사용자 정보를 업데이트 할 수있는 웹 프로그램이 있습니다. 즉, 실제로 '업데이트 된'열만 업데이트하고 싶습니다 ...
나는 이것에 대해 꽤 많은 연구를 해왔고 모든 방법이 입력을 이스케이프하기 위해 prepare
문을 사용하지 않는 오래된 쿼리를 사용하는 것 같습니다.
누군가가 성명서로 나를 도울 수 있습니까?
본질적으로 의사 코드 :
$ editedUserdata [ 'firstname']이면 FIRSTNAME 업데이트! = FIRSTNAME, $ editedUserData [ 'lastname']이면 LASTNAME
! = LASTNAME ... etc ...
다음은 포스트 코드에 대한 것입니다.
$password = sha1($password);
$editedUserData = array(
'firstname' => $firstname,
'lastname' => $lastname,
'username' => $username,
'password' => $password,
'cellphone' => $cellphone,
'security_level' => $seclvl,
'email' => $email,
'direct_phone' => $direct,
'ext_num' => $extension,
'is_active' => $userflag
);
그러면 다음과 같아야합니다.
$query = $this->db->prepare('UPDATE FIRSTNAME if(?) IS NOT FIRSTNAME, LASTNAME if(?) IS NOT LASTNAME, USERNAME if (?) IS NOT USERNAME.... VALUES (:firstname, :lastname, :username).....'
if ($query -> execute($editedUserData)) {
more code....
해결 방법
해결하려는 문제를 이해하지 못하지만 필드 값이 변경되었는지 테스트 할 필요는 없습니다.
필드 값이 "A"이고 거기에 "A"를 넣으면 그렇지 않으면 동일하게 유지되고 "B"를 넣으면 예상대로 업데이트됩니다.
준비된 진술은 다음과 같습니다.
$stmt = $dbh->prepare("
UPDATE table_name
SET
field1 = :value1,
field2 = :value2
WHERE
field0 = :key
");
$stmt->bindParam(':value1', $value1, PDO::PARAM_STR);
$stmt->bindParam(':value2', $value2, PDO::PARAM_STR);
$stmt->bindParam(':key', $key, PDO::PARAM_INT);
$stmt->execute()
참조 페이지 https://stackoverflow.com/questions/25538031
반응형
'MySql' 카테고리의 다른 글
MySQL mysql min은 null을 무시합니다-해결 방법 / 조정 필요 (0) | 2020.12.01 |
---|---|
MySQL Laravel에서 Insert ... Select 문 만들기 (0) | 2020.12.01 |
MySQL에서 DATEADD를 사용하는 방법은 무엇입니까? (0) | 2020.12.01 |
MySQL offset infinite rows (0) | 2020.12.01 |
MySQL 데이터베이스를 사용하는 VB.NET 로그인 양식 (0) | 2020.12.01 |
댓글