2014. 11. 14. 13:25

최신 XAMPP를 설치하고 로컬에서 작업중

 

mysql을 쓸일이 있어서 코드를 작성하니 Warning 발생!!!

 

확인을 해보니 PHP 5.5.x버젼부터

 

mysql_connect, mysql_query 등의 함수들이 deprecate 되었습니다

 

http://php.net/manual/en/migration55.deprecated.php

 

관련 문서를 확인해 보니

 

mysqli나 PDO를 사용하라고 하네요...

 

PHP를 업그레이드 하면 소스 수정 작업이 많아 질것 같네요...ㅜㅜ

Posted by 작은0악마
2014. 9. 17. 10:15

최근 프로젝트는 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을 지정할 수 도 있지만....

 

Posted by 작은0악마