728x90

오늘 Android Studio 기반 어플을 테스트 하는데 PHP Array 를 잘못 구현해서 삽질을 한참 했다.


 // 사무실번호, 휴대폰번호, 이름, 소속 등의 정보를 추출
$sql = "select userNM,mobileNO,telNO,sosok from Person ";
$sql .= "where mobileNO='".$search."'";

$R = array(); // 결과 담을 변수 생성
$result = mysqli_query($dbconn,$sql);
while($row = mysqli_fetch_object($result)) {
    array_push($R, $row);
}
echo json_encode(array("result"=>$R));


모든 정보를 select 문으로 가져와서 array_push 에 담은 경우에는 아무런 문제가 되지 않는다.


그런데 sosok 정보를 서브 쿼리로도 가져오기가 힘든 경우가 생겼다.

그래서 함수를 만들어서 해당 정보를 가져와서 array_push 에 저장할 때 아무 생각없이 코딩을 했더니 원하는 결과가 나오지 않고 엉뚱한 결과가 나온다.


$search = add_hyphen_telNo($search);
$sosok = Phone2Dept($search);

// 사무실번호, 휴대폰번호, 이름, 소속 등의 정보를 추출
$sql = "select userNM,mobileNO,telNO from SYS_MEMBER ";
$sql.= "where mobileNO='".$search."' or telNO='".$search."' ";

$R = array(); // 결과 담을 변수 생성
$result = mysqli_query($dbconn,$sql);
while($row = mysqli_fetch_object($result)) {
    array_push($R, $row);

    array_push($R, array("sosok"=>$sosok));

}

echo json_encode(array("result"=>$R));
 


잘못된 결과가 나온다.


아래와 같이 풀어서 해결했다. 풀어서 array_push 에 담으면 암호화된 코드를 추가하기도 편하다.


$sosok = Phone2Dept($search);

// 사무실번호, 휴대폰번호, 이름, 소속 등의 정보를 추출
$sql = "select userNM,mobileNO,telNO from SYS_MEMBER ";
$sql.= "where mobileNO='".$search."' or telNO='".$search."' ";

$R = array(); // 결과 담을 변수 생성
$result = mysqli_query($dbconn,$sql);
while($row = mysqli_fetch_array($result)) {
    array_push($R, array("userNM"=>$row[0],"mobileNO"=>$row[1],"telNO"=>$row[2],"sosok"=>$sosok));
}
echo json_encode(array("result"=>$R));


select 문 하나로 해결이 안되는 걸 json 방식으로 안드로이드폰과 통신하려면 위와 같은 방법으로 데이터를 추가하면 해결될 수 있다.


참고 : How to Use JSON Data with PHP or JavaScript

https://www.taniarascia.com/how-to-use-json-data-with-php-or-javascript/


Android 코드에서는

    int responseCode = conn.getResponseCode();
    //System.out.println("GET Response Code : " + responseCode);
    if(responseCode == HttpURLConnection.HTTP_OK){ // 연결 코드가 리턴되면
        bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String json;
        while((json = bufferedReader.readLine())!= null){
            sb.append(json + "\n");
        }
    }
    bufferedReader.close();
}
System.out.println("PHP Comm Out : " + sb.toString());


로 로그 결과를 확인해서 보낸 데이터가 원하는 형태로 넘어오는지 확인을 꼭 하는게 좋다.

              

블로그 이미지

Link2Me

,