Link2Me 2018. 6. 19. 23:31
728x90

PHP 에서 배열의 결과를 json 으로 반환하는 코드다.

네이버지식인에 간혹 화면에 결과가 없다고 질의가 올라오는 코드라서 아주 간단하게 적어본다.

json_encode 는 UTF-8로 된 것만 인식한다고 이해하면 된다.

DB, 서버와의 통신, 파일 인코딩 모드를 모두 UTF-8로 기본 설정해야 한다.


아래 코드를 파일로 첨부한다. 친절하게 테스트해보라고 테이블 구조까지 포함했다.


JSON.zip



<?php
extract($_GET);
$userID ="jsk005@naver.com"; // $_GET 배열로 넘어온 데이터라고 가정한다.

include_once 'dbconnect.php';

$sql = "SELECT * FROM members WHERE userID='".$userID."'";

$result = mysqli_query($dbconn,$sql) or die(mysqli_error($dbconn));
$R = array();
while($row = mysqli_fetch_array($result)){
array_push($R, array("userID"=>$row['userID'], "userNM"=>$row['userNM'], "OSType"=>$row['OStype']));
}

//echo '<pre>';print_r($R);echo '</pre>'; // 데이터가 제대로 들어있는지 확인 용도

echo json_encode(array("result"=>$R)); // 출력은 파일 Encoding 모드가 UTF-8 이어야 한다.
mysqli_close($dbconn);
?>

<?php
$dbconn = isConnectDb(); // DB 연결 함수

function isConnectDb(){
    $dbhost = 'localhost';
    $database = 'test';
    $dbuser = 'root';
    $dbpass = 'autoset';
    $dbport = "3306";
    $conn = mysqli_connect($dbhost,$dbuser,$dbpass,$database,$dbport);
    mysqli_set_charset($conn, "utf8");  // DB설정이 잘못되어 euc-kr 로 되어 있으면 문제가 됨
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
        exit;
    } else {
        return $conn;
    }
}
?>



728x90