![article thumbnail image](https://blog.kakaocdn.net/dn/dkHbhe/btr6P2qqkfd/XK76c56dbqwAbA3xp66QK1/img.png)
해결 방법
- $sql 이라는 이름의 변수를 하나만 쓰는데 insert, select 문을 담으려다보니 나중에 쓰여진 select문만 대입 됨
- $nm_sql_insert, $sm_sql_result 로 각각 삽입문, 조회문을 담는 변수 생성
- 사용자의 이름과 이메일을 데이터베이스에 삽입될 수 있도록 if문 생성 ($nm_sql_insert의 형식과 값에 안 맞으면 false 처리)
문제 해결 흐름
팀원에게 코드 리뷰를 받았는데 빨간색 네모박스 부분의 코드가 잘못된 것 같았다는 의견이 있었다.
sql 이라는 변수로 두 개의 쿼리를 실행할 수 없을 것이라는 의견이었다.
- 사용자가 입력한 이름과 이메일을, 데이터베이스에 삽입하는 쿼리 담을 변수 생성해야 함
- 삽입문 담은 쿼리가 제대로 실행이 됐는지 확인이 필요함
- 등록이 됐다면 조회도 이뤄져야 함
- 웬만하면 주석을 남기지 않는게 깔끔하게 보임
그래서 아래의 사진처럼 수정했다.
<?php
// 데이터베이스 연결
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mycat";
$nm_conn = new mysqli($servername, $username, $password, $dbname);
if ($nm_conn->connect_error) {
die("Connection failed: " . $nm_conn->connect_error);
}
// 폼 데이터 수집 및 쿼리 작성
$name = $_POST['name'];
$email = $_POST['email'];
$nm_sql_insert = "INSERT INTO users (name, email) VALUES ('$name', '$email')";
$nm_sql_result = "SELECT * FROM users WHERE name='$name' AND email='$email'";
if ($nm_conn->query($nm_sql_insert) === FALSE) {
echo "등록 중 오류가 발생했습니다.: " . $conn->error;
}
// 쿼리 실행 및 결과 처리
$result = $nm_conn->query($nm_sql_result);
if ($result->num_rows > 0) {
// 로그인 성공
echo "Login success!";
} else {
// 로그인 실패
echo "Invalid username or password";
}
// 데이터베이스 연결 종료
$nm_conn->close();
?>
삽입문 쿼리를 담을 변수인 $nm_sql_insert
조회문 쿼리를 담을 변수인 $nm_sql_result
삽입문 쿼리를 실행하고, $nm_sql_insert 에 맞지 않는 값과 형식이라면 false 처리하고 에러문 출력
정상적이라면 별 출력 없이 데이터베이스에 사용자 정보 삽입
데이터베이스에 사용자 정보가 등록이 됐다면 $nm_sql_result를 통해 조회하고 정보가 없다면 에러문 출력
'Problem Solving' 카테고리의 다른 글
[Database] Datagrip 'this view is read-only' 해결 (0) | 2023.06.07 |
---|---|
[PS] Spring Boot + Mustache 한글 깨짐 해결 (0) | 2023.05.13 |
[PS][종합프로젝트] Swagger 404 not found 해결 (0) | 2023.05.09 |
[PS] 깃랩-깃허브 미러링 연동 안 되는 문제 해결 (0) | 2023.03.30 |
[PS] 인텔리제이에서 DB 스키마 조회 안되는 현상 (0) | 2023.03.19 |