구마찌의 이진수 여행기
[PHP]DB에서 불러온 값들 implode로 구분하기 본문
개요
DB에서 받아온 값으로 쿼리 실행 후 복수 값 파이프라인(|) 구분
아래는 사용한 기능들 입니다.
* 참고 ) 전체 코드에 구현된 함수들 중 mysqli_ ~ 문자는 생략 되었으며, 해당 함수들은 재구성 하여 함수로 구현 됨.
1. query() 함수
-. 예시
$rs = $db->query($sql);
코드 설명에 앞서, $db 변수에는 db connection 부분이 구현되어 있습니다.
$sql 의 구문의 쿼리를 실행한 값을 $rs(query result set) 의 변수에 삽입
-. parameter : 실행할 query
-. return value : result set , 쿼리 실행 한 row를 불러옵니다. / false
2. fetch_array() 함수
-. 예시
$ret = $rs->fetch_array();
쿼리 실행 결과를 array 형태로 바꿔주는 함수입니다.
-. parameter : MODE
-. MYSQLI_ASSOC : 인덱스를 "필드명"으로 접근 가능 (associative array)
printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
-. MYSQLI_NUM : 인덱스를 숫자로 접근 가능 (numeric array)
printf("%s (%s)\n", $row[0], $row[1]);
-. MYSQLI_BOTH : 필드명과 숫자로 접근 가능 (associative and numeric array)
printf("%s (%s)\n", $row[0], $row["CountryCode"]);
-. return value : mysql_query 로 리턴된 object 형태의 result set(record)를 array 형태의 결과값으로 변환
3. array_push() 함수
-. 예시
array_push($temp, $ret['colmn_name']);
첫번째 파라미터의 array에 두번째 파라미터의 값을 넣어주는 형태입니다.
보통의 경우 두번째 파라미터는 array 객체입니다.
-. parameter : array() 배열 객체, 값(int, string, ...)
-. return value : array()
4. implode() 함수
-. 예시
$result = implode('|', $temp);
두번째 파라미터인 배열의 각 인덱스별 값의 구분자를 첫번째 파라미터로 구분하여 문자열로 리턴하는 함수입니다.
구분 대상은 "배열"만 가능합니다.
-. parameter : 구분자, array()
-. return value : String
5. 전체 소스
public function getProductList($product_seq, $db) {
$ret = array();
$temp = array();
$sql = "select code from table where product_seq = $product_seq";
$rs = $db->query($sql);
while($ret = $rs->fetch_array()) {
array_push($temp, $ret['code']);
}
$result = implode('|', $temp);
return $result;
}
6. 힘들었던 점
array 객체와 object 관해 이해하는 데에 시간이 걸렸다.
implode 함수의 매개변수로 배열이 들어가야한다는 것을 알면서도
associative array 에 대한 이해도가 떨어져서 값 가져오는 것을 헤맸었다.
다음 번에는 좀 더 능숙하게 사용할 수 있도록 array 와 object 를 연습해야겠다.