반응형

출처: 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이 정상적으로 만들어진다.

반응형
Posted by 애콜라이트
l

free counters