반응형
안드로이드를 개발하다보면 서버(데이터베이스)와 통신해야 하는 기능을 개발해야 할 때가 많습니다.
이럴때, 우리는 php, js 등으로 데이터베이스와 안드로이드간에 통신이 가능하게 만들어줄 페이지를 개발해야합니다.
php가 어떤 장점을 가지고 있는지는 잘 모르겠지만... 저는 php로 이런 통신 페이지를 개발하기 시작했습니다.
페이지를 어떻게 만드는지, 지금부터 시작합니다.
먼저, 데이터를 저장하고있는 데이터베이스의 정보를 확인해주세요.
필요한 정보는 다음과 같습니다.
데이터베이스 타입 : mysql, mssql 등등
데이터베이스 서버 호스트 이름
데이터베이스 접속 아이디
데이터베이스 접속 비밀번호
데이터베이스 이름
이제, 우리의 서버에 dbCon.php 파일을 한개 만들어줍니다.
파일 내용은 다음과 같습니다.
<?php
class JConfig{
public $dbtype = '데이터베이스 타입';
public $host = '데이터베이스 서버 호스트 이름';
public $user = '데이터베이스 접속 아이디';
public $password = '데이터베이스 접속 비밀번호';
public $db = '데이터베이스 이름';
}
?>
데이터베이스와 안드로이드간의 통신을 위한 파일을 만들어줍니다. 이번 포스트에서는 회원가입시 아이디 중복 체크 코드를 작성하겠습니다.
파일 이름은 checkExist.php로 하겠습니다.
파일 내용은 다음과 같습니다.
<?php
include("dbCon.php"); //위에서 만들었죠?
$Conf = new JConfig; //위에서 만든 dbCon.php 파일에 있는 JConfig 클래스를 생성합니다.
//db접속 정보를 변수 conn에 저장합니다.
$conn = mysqli_connect($Conf->host, $Conf,->user, $Conf->password, $Conf->db);
$_id = $_GET['_id']; //안드로이드에서 입력받을 변수 이름과 동일하게 해야합니다.
//mysqli_query 함수를 통해 데이터베이스에 SQL합니다.
$query = mysqli_query($conn, "SELECT _id FROM USER_INFO WHERE _id='".$_id."'");
//mysqli_num_rows 함수를 통해 SQL에 대한 결과값의 행 개수를 변수 num에 저장합니다.
$num = mysqli_num_rows($query);
if($num > 0){ //행 개수가 0을 초과하면 해당 아이디는 이미 존재한다는 뜻입니다.
$result = new StdClass(); //json타입으로 이쁘게 전송하기 위해 StdClass를 생성합니다.
//result 클래스에 result컬럼을 만든 후, 해당 컬럼의 값을 EXIST로 설정합니다.
$result->result = "EXISTS";
} else {
$result = new StdClass();
$result->result = "AVAILABLE";
}
//json 타입의 결과값을 return합니다.
header('Content-Type: application/json');
echo json_encode($result, JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE);
//DB 접속을 종료합니다.
mysqli_close($conn);
?>
끝입니다!
여기에서는 GET 방식을 사용했지만, POST방식도 동일하게, $_POST['_id']; 로 입력받으면 됩니다.
차이는... GET 방식 사용시, 인터넷 브라우저에서 쉽게 확인이 가능하다는것..?
위에서 작성한 페이지를 인터넷 브라우저에서 호출하면 다음과 같은 결과를 확인 할 수 있습니다.
안드로이드에서 페이지 호출시 서버 응답값으로 위와 같은 json데이터를 받을 수 있습니다.
안드로이드와 php 연동은 Android 카테고리의 retrofit2 연동하기를 참고하세요.
boxster718.tistory.com/8?category=915277
감사합니다.
반응형
'PHP' 카테고리의 다른 글
PHP 날짜(시간)표기, 날짜 계산하기 (0) | 2021.02.01 |
---|---|
PHP FCM 서버 연동하기 (0) | 2021.01.26 |