반응형
출처: http://egloos.zum.com/qwertystar/v/844677
MySQL DB에 저장된 웹으로 데이터를 뿌려줄려고 하니
가장 좋은 방법이 XML로 보내는 거라는 정보를 찾았다.
표준이다보니 이기종 간에도 전송이 가능하다니 , 그래서 나도 XML을 이용하기로 했다.
요번 기회에 PHP도 어떤지 한 번 이용해보고 싶었기 때문에 PHP를 이용하여 작성했다.
내 개발환경은 다음과 같다. OS만 리눅스라는 점만 빼면 위의 링크와 크게 다를 바 없다.
OS: CentOS 6.6 32bit
웹 서버: Apache 2.2
PHP: 5.4.45
DB: MariaDB 10.0.17
PHP 페이지는 다음과 같이 작성했다.
위의 것과 크게 다른 것이 없으니 위의 링크도 보는 것을 추천한다.
1 2 3 4 5 6 7 8 9 10 11 12 | // dbInfo.php // DB 연결을 위한 정보 포함 <!--?php // 오류 발생시 브라우저에 내용을 보여줌 error_reporting (E_ALL); ini_set ( "display_errors" , 1); define( 'DB_USER' , '사용자명' ); define( 'DB_PASSWORD' , '비밀번호' ); define( 'DB_NAME' , '데이터베이스명' ); define( 'DB_SERVER' , '호스트명' ); ?--> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | // dbConnect.php // DB 연결을 위한 페이지 <!--?php // DB 정보 가져옴 include 'dbInfo.php' ; // 오류 발생시 브라우저에 내용을 보여줌 error_reporting (E_ALL); ini_set ( "display_errors" , 1); // DB 연결 함수를 포함하는 클래스 class DBConnect { function connect() { // DB에 연결. 연결되지 않으면 에러 메시지를 보여주고 종료 $connect = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die ( 'Could not connect to Server ' .mysql_errno()); // DB 선택 $select_db = mysql_select_db(DB_NAME); // 연결 정보 보냄 return $connect ; } function disconnect() { // DB 연결 종료 mysql_close(); } } ?--> <p><br></p> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | // sendXML.php // XML을 만드는 페이지 <!--?php // 오류 발생시 브라우저에 내용을 보여줌 error_reporting (E_ALL); ini_set ( "display_errors" , 1); // DB 연결 처리 내용을 가져옴 include 'dbConnect.php' ; // DBConnect 클래스 생성 및 초기화 $db = new DBConnect; $dbConnection = $db --->connect(); // $searchField = "subject"; // $searchWord = "aaa"; $sql = "select * from dictionary;" ; //PHP에서는 문자열 안에 변수명을 집어넣으면 알아서 변수로 인식한다. // $sql = "select * from dictionary where $searchField like '%$searchWord%';"; // 쿼리 결과를 받아온다. $result = mysql_query( $sql ); // .= 연산자를 이용해 문자열을 합친다. $xmlDoc = "<!--?xml version=\"1.0\" encoding=\"utf-8\"?--><p>" ; // XML 선언부 $xmlDoc .= "</p><dictionary>" ; // 쿼리 결과에서 컬럼명을 이용해 컬럼 값을 가져온다. while ( $obj = mysql_fetch_object( $result )) { $dicSubject = $obj ->subject; $dicContent = $obj ->content; $dicRegdate = $obj ->regdate; $dicIp = $obj ->ip; // 어차피 브라우저에서 보면 예쁘게 잘 나오기 때문에 개행문자는 붙이지 않았다. // 모바일의 경우 데이터 사용량을 줄이기 위해 조금이라도 용량을 줄이는 것이 낫고, // 파싱 시 개행문자로 인한 오작동도 줄일 수 있다. $xmlDoc .= "<item>" ; $xmlDoc .= "<subject>$dicSubject</subject>" ; $xmlDoc .= "<content>$dicContent</content>" ; $xmlDoc .= "<regdate>$dicRegdate</regdate>" ; $xmlDoc .= "<ip>$dicIp</ip>" ; $xmlDoc .= "</item>" ; } $xmlDoc .= "</dictionary>" ; // XML 파일이 저장될 경로 및 파일 이름을 설정한다. 나는 그냥 PHP 페이지 위치와 같게 설정했다. $dir = "/var/www/html/dictionary" ; $filename = $dir . "/dicXML.xml" ; // XML 파일을 저장한다. 기존 파일이 이미 있다면 덮어쓰기한다. file_put_contents ( $filename , $xmlDoc ); $db ->disconnect(); ?> |
이렇게한 뒤 해당 XML 주소로 가면 다음과 같이 XML이 정상적으로 만들어진다.
반응형