2차원 배열로 패치
oci_fetch_array는 행마다 null값이 나올때까지 패치를 진행하고 한행씩 열의 값을 대입하는 열고정 행변환 방식으로 진행된다. oci_fetch_all은 2차원 배열자체로 데이터를 가져와서 한번에 모든 데이터를 패치한다. 넣는 데이터의 열의 값이 한행씩 들어가서 행고정 열변환 방식으로 진행이된다.
oci_fetch_all과 oci_fetch_array의 차이는 oci_fetch_all의 경우 데이터를 배열로 한번에 불러와서 원하는 데이터를 조작이 가능하지만 한번에 모든 데이터를 읽어오기때문에 리소스 차지 비율이 크다. 그리고 데이터를 미리 불러오고 출력하는 형식이기 때문에 리소스를 해지를 보다 빠르게 선언할 수 있으며 나올 행의 갯수를 미리 파악할수있어 가독성이 높다.
반면 oci_fetch_array는 한번에 한 열씩null값이 발생할때까지 반복하기 때문에 행의 출력 값을 예상할수없고 출력에 원하는 데이터만을 출력하는 등의 조작은 할 수 없다.
실습1 st_vi.php를 fetch_all방식을 사용해서 프로그램을 작성한다.


삭제기능은 execute시 바로 commit된다. 삭제할 데이터의 값을 del로 변환한 다음 del값을 찾아서 지우는 방식
get방식으로 데이터를 전달한다. 따라서 get방식으로 데이터 사용한다.
실습2 st_vi.php에 삭제 기능을 추가한다.




검색기능은 search된 내용에 따라 분기 발생시켜 검색한 내용이 있을때만 검색하고 공란을 입력하면 데이터가 전부 출력된다.
실습3 sc_vi.php에 검색 기능을 추가한다.


삭제기능과 검색기능은 서로 다른 기능이기때문에 같이 사용하고 싶다면 이어서 적어주면 된다. 하지만 순서에 따라 작동여부가 달라진다. 삭제기능을 먼저쓰고 검색기능을 쓰면 정상 작동하지만 검색기능을 먼저 쓰고 삭제기능을 사용하면 $result의 값을 제대로 읽어오지 못한다.
개인적인 생각으로는 search한 $result 데이터의 값중 일부를 del로 변경하여 삭제하게 되는데 $result에서 출력는 값을 search에서 다시 출력되는 과정에서 문제가 되는것 같다.
화면출력단위를 조절하는 것은 열번호를 이용해서 한페이지에 게시물을 얼마나 출력할것인지를 정한다. 중요한점은 $p와 $n은 각각 이전페이지, 다음페이지의 시작점을 가르키는 것이다. $p는 음수일경우 이전으로 이동할수없고 $n의경우 열번호보다 클수없다.
실습4 st_vi.php에 한 페이지에 5개의 정보만 출력하게 제한하는 기능을 추가한다.
위와 같은 방식의 프로그램의 단점은 페이지 이동시 마다 반복해서 데이터를 전부 불러오는 것으로 개선을 위해서는 튜닝이 필요하다. search, delete, printpage를 전부 사용할때에는 search를 get방식으로 변경해야 한다. 이 부분이 search문제점인데 post랑 get둘다 사용하시 결과화면에 따라 나오는 값이 적용되지 않을 수 있다. 그리고 페이지 이동시 화면구성에서 echo("<a href=./st_vi2.php?start=$p&search=$search>이전 페이지</a> "); 와 같이 사용하는 변수인 start값과 search값을 가지고 가야한다. 그렇지 않으면 형식이 맞지 않아 $search 변수의 값이 적용되지 않는다.
'교육 > Php' 카테고리의 다른 글
Day 38 (Php) (0) | 2020.01.12 |
---|---|
Day 33 (Php + Oracle) (0) | 2020.01.03 |
Day 31 (php + DB) (0) | 2019.12.31 |
Day 30 ( php + Oracle) (0) | 2019.12.30 |
Day 30 (php) (0) | 2019.12.30 |