사용자 정보를 수정하는 PHP 데이터베이스 작업
실제 백그라운드 관리에서 관리자는 많은 사용자 정보를 수정할 수 있습니다. 권한이 공개되면 관리자는 사용자의 사용자 이름 및 기타 정보를 수정할 수도 있습니다.
실제 작업에서는 다음과 같은 경우가 많습니다.
수정할 사용자 선택
관련 내용 수정
사용자 목록 페이지를 만들 때 목록에서 사용자 편집 및 사용자 삭제 기능을 표시하는 방법을 완전히 보여드렸습니다.
수정할 사용자를 목록에서 선택하려면 클릭하세요. 수정해야 하는 콘텐츠를 표시하는 전용 페이지가 있어야 합니다. 위의 두 번째 사진에서도 보여드렸습니다.
그런데 코드를 구현할 때 사용자 정보는 어떻게 넣나요?
edit.php는 사용자 정보를 표시합니다.
구현 과정:
1. 사용자 정보를 가져오기 위해 get에 사용자 ID를 전달할 수 있습니다. SQL 문을 사용하여 사용자 정보를 쿼리합니다.
<?php if (is_numeric($_GET['id'])) { $id = (int) $_GET['id']; } $sql = "select id,username from user where id = " . $id; $result = mysqli_query($conn, $sql); $data = mysqli_fetch_assoc($result); ?>
2. 양식에 사용자 정보를 할당합니다. 사용자가 제출을 클릭하면 사용자가 수정한 값을 update.php의 양식 테이블에 제출합니다. 업데이트에서 조건이 수정된 위치에서 수정할 사용자를 지정해야 하기 때문입니다. 그래서 입력 숨김 형식에 사용자 ID를 넣습니다. 제출을 클릭하면 숨겨진 ID도 업데이트 페이지로 전달됩니다.
사용자 이름은 일반적으로 수정이 허용되지 않습니다. 따라서 사용자 이름 입력 양식 끝에 읽기 전용 매개 변수를 추가했으며 사용자 이름은 수정이 허용되지 않습니다.
코드는 다음과 같습니다:
<form action="update.php" method="post"> 用户名:<input type="text" name="username" value="<?php echo $data['username'];?>" readonly><br /> 密码:<input type="password" name="password"><br /> <input type="hidden" value="<?php echo $data['id'];?>" name="id" /> <input type="submit" value="提交"> </form>
update.php 수정 작업 사용자 데이터
실제로는 사용자의 비밀번호만 변경할 수 있습니다. 두 가지 상황이 있습니다.
1. 사용자가 비밀번호를 변경했습니다.
2. 사용자가 비밀번호를 변경하지 않았습니다.
실제로 이전을 속일 수 있습니다. 기술을 이해하지 못하는 일반적인 작업.
1. 비밀번호를 변경하지 않은 경우 성공 메시지를 보냅니다.
2. 비밀번호를 변경한 경우. 실제로 사용자의 비밀번호를 변경하면 변경이 성공했다는 메시지도 표시됩니다.
사용자 ID와 비밀번호 얻기
구현 과정에서 사용자 ID를 얻어야 합니다. 그렇지 않으면 업데이트 문이 생성될 때 전체 테이블의 모든 데이터가 where 조건 없이 수정됩니다.
비밀번호는 이전에 md5를 사용하여 저장되었습니다. 따라서 사용자가 비밀번호를 변경한 경우 해당 비밀번호도 md5에 저장되어야 합니다.
$id = (int)$_GET['id']; $password = md5(trim($_POST['password']));
SQL 문 생성
수정된 SQL 문에 사용자 ID와 비밀번호를 넣고 MySQL 서버로 전송하여 실행한다. 즉, 비밀번호 변경 작업이 완료됩니다.
$sql = "update user set password='" . $password . "' where id = $id"; $result = mysqli_query($conn, $sql); if ($result) { echo '修改成功'; }
전체 표현 시연
사용자 정보를 폼으로 출력하는 소스코드
<?php if (is_numeric($_GET['id'])) { $id = (int) $_GET['id']; } $sql = "select id,username from user where id = " . $id; $result = mysqli_query($conn, $sql); $data = mysqli_fetch_assoc($result); ?> <form action="update.php" method="post"> 用户名:<input type="text" name="username" value="<?php echo $data['username'];?>"><br /> 密码:<input type="password" name="password"><br /> <input type="hidden" value="<?php echo $data['id'];?>" name="id" /> <input type="submit" value="提交"> </form> <?php mysqli_close($conn); ?>
update.php로 수정한 소스코드