본문 바로가기
Infra & Security Eng/Database Engineering

[PHP] Oracle DB 연동 및 테이블별 데이터 출력 실습 (st_vi, pr_vi 등)

by 엔지니어 E 2026. 3. 20.
반응형

0320 실습

1. conn.php 파일은 오라클 연동을 위해 만들어 놓는다 (항상 준비해놓기) 
2. st_in.html 파일은 다음에 만들 것이고, st_vi.php(학생 출력), pr_vi.php(교수 출력), co_vi.php(과목 출력), sc_vi.php (점수 출력)파일을 만들것

* Select 다음에 * (백설표) 쓰지 말 것 
1. conn.php파일 만들기
===================================
<?
  $server = "dal";
  $user = "st15";
  $passwd = "st15";
  $charset = "AL32UTF8";
  $conn=@oci_connect($user, $passwd, $server, $charset) or die('Could not connect:');
?>
=================================== 

2. 4개 파일 만들기 (st_vi.php, pr_vi.php, co_vi.php, sc_vi.php)
st_vi.php 파일 예시 (파일 공통) 

<?
  echo("<a href=./st_in.html>자료 입력하기</a><hr>"); - 화면에 자료 입력하기 글자 출력, 클릭하면 입력 페이지로 가게 만든다 
  require('conn.php'); - 데이터베이스에 접속하는 설정이 담긴 conn.php파일을 이 자리로 불러온다
* 외부 파일(conn.php)에 작성된 데이터베이스 접속 변수($conn)와 설정값들을 현재 실행 중인 파일로 그대로 가져온다 
  $sql="select sno, sname, sex, syear, major, avr   
        from student order by sno";  - 실행할 SQL 명령어를 준비한다 (학번순으로 정렬함)       
* $sql(변수): 실행할 SQL 문장을 저장하는 문자열 저장소 
 

  $result=oci_parse($conn, $sql); - 준비한 명령어를 데이터베이스에서 실행할 수 있도록 검사(파싱) 한다
* 접속통로($conn)를 통해 명령문($sql)을 전달하여 데이터베이스가 해당 문장을 읽고 실행 가능한 상태인지 문법을 검사(컴파일)함. 그 결과 상태를 $result 변수에 담는다 
이것만 암기 메커니즘은 $conn 실행 -> $sql 실행 -> oci_parse 실행이 된 그 실행 내용이 $result 변수에 저장이 되는 것

  oci_execute($result); - 검사가 끝난 명령어를 실제로 실행함   
* oci_parse로 준비가 끝난 $result 명령을 데이터베이스 서버에서 실제로 수행하여 데이터를 찾아낸다       
    

  while ($row = oci_fetch_array($result, OCI_NUM)){ - 실행 결과에서 데이터를 한줄씩 꺼내오는 과정을 반복함
         echo("$row[0] - $row[1] - $row[2] - $row[3] - $row[4] - $row[5] <br>");
  } - $row[0]은 첫 번째 칸(학번), $row[5]는 여섯 번째 칸(평점) 이다, 0부터 5까지 총 6개의 데이터를 순서대로 화면에 출력함
* 실행 결과로 얻은 전체 데이터 뭉치($result-입력값)에서 1행(한 줄)씩 읽어오는 과정을 반복 한다 
* OCI_NUM: 가져온 데이터를 컬럼 이름이 아닌 0,1,2 식의 숫자 번호로 분류한다

  oci_free_statement($result);  - 명령 실행에 사용했던 임시 메모리 공간을 비워줌
  oci_close($conn); - 데이터베이스와의 연결을 안전하게 끊음
?>

* 함수는 그냥 위에서 아래로, 괄호 안에서 밖으로 실행된다고 생각하면 됨 

 

참고사항 

$row = oci_fetch_array($result, OCI_NUM) 실행 순서
1. $result 참조: oci_execute를 통해 데이터베이스 서버 메모리에 생성된 전체 결과 데이터 뭉치(Result Set)를 가리킨다
2. 데이터 행 추출: 데이터베이스에서 아직 읽지 않은 데이터 중 가장 위에 있는 **1행(한 줄)**을 읽어서 가져온다
3. 데이터 번호 할당 (OCI_NUM): 가져온 1행의 각 칸(컬럼)에 대해, 왼쪽부터 순서대로 **0, 1, 2, 3...**과 같이 숫자로 된 번호표(인덱스)를 붙인다
4. 배열 생성: 번호가 매겨진 데이터들을 PHP가 처리할 수 있는 형태인 숫자 인덱스 배열로 변환한다
5. 변수 대입 ($row): 생성된 배열 데이터를 $row라는 이름의 변수에 저장한다. 이제 $row[0]이나 $row[1]과 같은 방식으로 각 데이터에 접근할 수 있게 된다
6.상태 업데이트: 데이터베이스는 방금 읽은 줄의 다음 줄을 가리키도록 위치(Pointer)를 이동시켜, 다음번 호출 시 그다음 줄을 읽을 수 있도록 준비한다