profile image

L o a d i n g . . .

해결 방법

  1. $sql 이라는 이름의 변수를 하나만 쓰는데 insert, select 문을 담으려다보니 나중에 쓰여진 select문만 대입 됨
  2. $nm_sql_insert, $sm_sql_result 로 각각 삽입문, 조회문을 담는 변수 생성
  3. 사용자의 이름과 이메일을 데이터베이스에 삽입될 수 있도록 if문 생성 ($nm_sql_insert의 형식과 값에 안 맞으면 false 처리)

문제 해결 흐름

기존 코드

팀원에게 코드 리뷰를 받았는데 빨간색 네모박스 부분의 코드가 잘못된 것 같았다는 의견이 있었다.

sql 이라는 변수로 두 개의 쿼리를 실행할 수 없을 것이라는 의견이었다.

 

  1. 사용자가 입력한 이름과 이메일을, 데이터베이스에 삽입하는 쿼리 담을 변수 생성해야 함
  2. 삽입문 담은 쿼리가 제대로 실행이 됐는지 확인이 필요함
  3. 등록이 됐다면 조회도 이뤄져야 함
  4. 웬만하면 주석을 남기지 않는게 깔끔하게 보임

그래서 아래의 사진처럼 수정했다.

 

<?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를 통해 조회하고 정보가 없다면 에러문 출력

복사했습니다!