최근 프로젝트는 PDO를 사용할 수 밖에 없었다
그런데 PDO를 쓰다보니 두가지의 답답한 문제에 봉착했다.
1. PDO는 mysql_num_rows 와 같은 레코드셋의 row의 수를 가져올 수 있는 기능이 없다.
2. PDO는 mysql_data_seek 과 같은 레코드셋의 포인터를 이동할 수 있는 기능이 없다.
이를 해결하기 위해 구글링은 해본 결과 레코드셋을 배열에 저장하고 그 배열을 사용하는 방법이 제일 좋은것 같다.
간단한 코드는
$stmt 를 PDOStatement 라고 할때
$result_array = $stmt->fetchAll();
//레코드셋에 row가 있는지 확인
if(count($result_array)){
foreach($result_array as $row){
//여기서 필요한 처리를 진행...
}
}
위와 같이 하면 $result_array 배열의 인덱스를 가지고 위치도 옮겨 다닐수 있고 순차 처리도 가능해지며 재사용이 가능하다.
참고로 fetchAll 메소드를 사용하면 $stmt>fetch(PDO::FETCH_BOTH )와 같은 방식으로 배열로 반환해주기 때문에
컬럼의 index나 name으로 다 사용이 가능하다.
물론 fetchAll()에 fetch style을 지정할 수 도 있지만....
'PHP' 카테고리의 다른 글
PHP 5.5.x 버전부터 mysql 관련 함수가 deprecate 되었습니다. (0) | 2014.11.14 |
---|---|
특정 경로의 파일 정보 가져오기 (0) | 2014.11.13 |
특정 경로의 폴더 리스트 가져오기 (0) | 2014.11.13 |
파일의 확장자 분리 (0) | 2014.10.24 |
템플릿언더바(Template Underscore) (0) | 2014.06.09 |