안드로이드 데이터베이스 연동으로 회원가입 및 중복확인을 하는 과정에서 PHP를 접하게 되었다. 사실 생기초 중 기초지만, 지금이라도 기초를 천천히 다져보고자 블로그에서 본 코드를 해체 분석 해보고자 한다.
<?php
$con = mysqli_connect("localhost", "사용자명", "비밀번호", "스키마");
// mysql 과 연동하는 부분,
mysqli_query($con, 'SET NAMES utf8');
// mysqli_set_charset($conn,'utf8');
// mysqli 한글 깨짐 방지
// POST 형식으로 MySQL로부터 데이터를 받아오는 부분
// "$변수" 로 변수 선언
$id = $_POST["id"];
$password = $_POST["password"];
$name = $_POST["name"];
$email = $_POST["email"];
$statement = mysqli_prepare($con, "INSERT INTO userinfo VALUES(?, ?, ?, ?)");
// 해당 DB에 쿼리 입력
mysqli_stmt_bind_param($statement, "sssi", $id, $password, $name, $email);
// 파라미터를 바인드하는 부분, 값을 입력한다.
// "sssi" -> 문자열, 문자열, 문자열, 정수형을 의미한다.
mysqli_stmt_execute($statement);
// 바인드한 쿼리문을 실제로 실행한다.
$response = array();
// POST로 넘겨받은 정보를 이용, 데이터를 response 배열로..
$response["success"] = true;
// response["success"] 선언
echo json_encode($response);
// 정보를 담고있는 배열을 json형식의 문자열로 변환하여 반환하는
// json_encode()를 이용해서 정보를 전달한다.
// 안드로이드에서 받고자 할 때 JSONObject로 받는다.
?>
<?php
$con = mysqli_connect("localhost", "사용자명", "비밀번호", "스키마");
// mysql 연결, IP, 사용자명, 비밀번호, 데이터베이스
mysqli_query($con, 'SET NAMES utf8');
// mysqli_set_charset($conn,'utf8');
// mysqli 한글 깨짐 방지
$id = $_POST["id"];
$password = $_POST["password"];
// $ -> 변수 선언
// POST로 해당 필드를 받아오는 모습
$statement = mysqli_prepare($con, "SELECT * FROM userinfo WHERE id = ? AND password = ?");
mysqli_stmt_bind_param($statement, "ss", $id, $password);
// "ss" -> 문자열 2개, 문자열 1개에 정수형 1개면 "si", SQL과 매개변수를 묶는 역할
mysqli_stmt_execute($statement);
// 준비된 SQL문 실행
mysqli_stmt_store_result($statement);
// SELECT, SHOW, DESCRIBE를 성공적으로 실행한 모든 쿼리에 대해 호출해야 함
// 생성된 레코드셋을 가져와 저장함
mysqli_stmt_bind_result($statement, $id, $password, $name, $email);
// 검색 결과로 반환되는 레코드셋의 필드를 php 변수에 바인딩
// mysqli_stmt_fetch 호출 전, 모든 필드가 바인드되어야 함
$response = array();
// POST를 이용해 넘겨받은 정보를 이용해
// SELECT문으로 db로 부터 어떤 값을 찾아 해당 데이터를 (response)배열에 넣어준다.
$response["success"] = false;
// 필드 정보 출력
while(mysqli_stmt_fetch($statement)){
$response["success"] = true;
$response["id"] = $id;
$response["password"] = $password;
$response["name"] = $name;
$response["email"] = $email;
}
// 정보를 담고있는 배열을 json형식의 문자열로 변환하여 반환하는
// json_encode()를 이용해서 정보를 전달한다.
// (안드로이드에서 받고자 할 때 JSONObject로 받는다.)
echo json_encode($response);
?>
<?php
$con = mysqli_connect("localhost", "사용자명", "비밀번호", "스키마");
$name = $_POST["name"];
$email = $_POST["email"];
$id = NULL;
$statement = mysqli_prepare($con, "SELECT id FROM userinfo WHERE name = ? AND email = ?");
// 조건에 맞는 ID를 출력한다.
mysqli_stmt_bind_param($statement, "ss", $name, $email);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
// select 문 실행시에는 항상 넣어주어야 한다.
mysqli_stmt_bind_result($statement,$id);
// 변수 id($id) 에 결과값 입력
$response = array();
$response["success"] = false;
// 조건에 맞는 id가 없으면 false 출력
while(mysqli_stmt_fetch($statement)){
$response["success"]=true;
$response["id"]=$id;
// 조건에 맞는 id가 있으면 true 출력과 동시에,
// response 배열의 id 에 변수 id 값을 입력한다.
}
echo json_encode($response);
?>
회원 정보에 관해 만드는 PHP는 위의 케이스들을 기반으로 이루어진다. 회원 중복확인 / 비밀번호 찾기 등등..
활용을 어떻게 하는지에 따라서, 무궁무진하게 사용한 예시들이니 잘 기억해두는 것이 좋을듯 하다. 다음에는 PHP 라는 언어 자체에 대해 자세하게 알아볼 계획이다.
참고 및 출처