반응형

오라클과 PHP 연동

- echo로 출력할 수 있는거

 *변수안에 있는 문자열

 

-fetch : 배열에 담는 행위

oci_fetch_all : 한번에 2차열배열을 다가져온다. 성능이 좋아 속도가 빠르지만 메모리를 많이 소모한다.

oci_fetch_ally : 한번엔 1차열 배열을 가져온다.

연동프로그램에서 가장 기본적인것은 SQL , 프로그램에 숙달 되야 한다.

insert, delete , alter 등 다해봐야한다.

 

oci_parse

- SQL문을 파싱한다.

- 오라클 접속 식별자를 반환한다.

oci_bind_by_name 

 - 이걸 사용하면 인젝션공격이 되지않는다.

 - 실행여부를 불리언 타입으로 반환한다

 

oci_execute : 파싱한걸 실행하는 함수 

oci_commit_on_success : 자동 커밋

bool empty : 변수가 NULL 인지 확인한다.

공통적으로 사용되는 파일은 '실행파일로 따로 만들어준다.

<html><head>
  <meta http-equiv="content-type" content="text/html; charset=euc-kr">
  <title> student 입력폼 </title>
</head>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
  <form name="insert" action="st_in.php" method="POST">
    <center>
    <table  border="0" width="250">
    <tr>
      <td width="50"><p align="center">학번</p></td>
      <td>&nbsp;&nbsp;<input type="text" name="sno"></td>
    </tr>
    <tr>
      <td width="50"><p align="center">이름</p></td>
      <td>&nbsp;&nbsp;<input type="text" name="sname"></td>
    </tr>
    <tr>
      <td width="50"><p align="center">성별</p></td>
      <td>&nbsp;&nbsp;남<input type="radio" name="sex" value="남">,
                   여<input type="radio" name="sex" value="여"></td>
    </tr>
    <tr>
      <td width="50"><p align="center">학과</p></td>
      <td>&nbsp;&nbsp;<select name="major" size="1">
        <option value="화학">화학</option>
        <option value="생물">생물</option>
        <option value="물리">물리</option>
        <option value="유공">유공</option>
        <option value="식영">식영</option></td>
      </tr>
      <tr>
        <td width="50"><p align="center">학년</p></td>
        <td>&nbsp;&nbsp;1<input type="radio" name="syear" value="1">,
          2<input type="radio" name="syear" value="2">,
          3<input type="radio" name="syear" value="3">,
          4<input type="radio" name="syear" value="4"></td>
        </tr>
        <tr>
          <td width="50"><p align="center">학점</p></td>
          <td>&nbsp;&nbsp;<input type="text" name="avr"></td>
        </tr>
        <tr>
          <td colspan="2">
            <p align="center"><input type="submit" name="확인" value="확인"></p>
          </td>
        </tr>
      </table>
    </form>
    <hr>
    <?php show_source(__FILE__); ?>
  </body>
  </html>

-student 테이블 입력 폼파일

<?php
  $sno = $_POST[sno];
  $sname = $_POST[sname];
  $sex = $_POST[sex];
  $major = $_POST[major];
  $syear = $_POST[syear];
  $avr = $_POST[avr];
  require('conn.php');
  $sql="insert into student (sno, sname, sex, major, syear, avr)
      values ('$sno', '$sname', '$sex', '$major', $syear, $avr)";
  $result=oci_parse($conn,$sql);
  $re=oci_execute($result);
  oci_free_statement($result);
  oci_close($conn);

  if($re)
  echo("정상 입력 되었습니다.");
  echo("<hr>");
  show_source(__FILE__);
?>

- student 테이블 php&oracle 연동 데이터 입력 파일

 

실습 - professor 테이블

<html><head>
  <meta http-equiv="content-type" content="text/html; charset=euc-kr">
  <title> professor 입력폼 </title>
</head>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
  <form name="insert" action="pr_in.php" method="POST">
    <center>
    <table  border="0" width="250">
    <tr>
      <td width="50"><p align="center">교수번호</p></td>
      <td>&nbsp;&nbsp;<input type="text" name="pno"></td>
    </tr>
    <tr>
      <td width="50"><p align="center">이름</p></td>
      <td>&nbsp;&nbsp;<input type="text" name="pname"></td>
    </tr>
    <tr>
      <td width="50"><p align="center">학과</p></td>
      <td>&nbsp;&nbsp;<select name="section" size="1">
        <option value="화학">화학</option>
        <option value="생물">생물</option>
        <option value="물리">물리</option>
        <option value="유공">유공</option>
        <option value="식영">식영</option></td>
      </tr>
      <tr>
        <td width="50"><p align="center">직위</p></td>
        <td>&nbsp;&nbsp;정교수<input type="radio" name="orders" value="정교수">,
            부교수<input type="radio" name="orders" value="부교수">,
            조교수<input type="radio" name="orders" value="조교수">,
       </td>
      </tr>
      <tr>
        <td width="50"><p align="center">부임일</p></td>
        <td>&nbsp;&nbsp;1<input type="date" name="hiredate"></td>
        </tr>
        <tr>
          <td colspan="2">
            <p align="center"><input type="submit" name="확인" value="확인"></p>
          </td>
        </tr>
      </table>
    </form>
    <hr>
    <?php show_source(__FILE__); ?>
  </body>
  </html>

-professor 테이블 입력 폼파일

<?php
  $pno = $_POST[pno];
  $pname = $_POST[pname];
  $section = $_POST[section];
  $hiredate = $_POST[hiredate];
  $orders = $_POST[orders];
  require('conn.php');
  $sql="insert into professor (pno, pname, section, orders, hiredate)
      values ('$pno', '$pname', '$section', '$orders', to_date('$hiredate','YYYY/MM/DD'))";
  $result=oci_parse($conn,$sql);
  $re=oci_execute($result);
  oci_free_statement($result);
  oci_close($conn);

  if($re)
  echo("정상 입력 되었습니다.");
  echo("<hr>");
  show_source(__FILE__);
?>

-porfessor 테이블 php&oracle 데이터 입력 파일

date 타입의 values 값은 to_date 함수를 써야 하는것에 주의한다.

select 문 사용

 

-$result 에 실행한 문장이 넘어온다.

-출력 $row=oci_fetch_array ($result)

 1차원 배열로 $ row 안에 있는 행이 담긴다.

-oci_free_statement : 가지고 있던 데이터를 리셋

<?php
  echo("<a href=./st_in.html>자료 입력하기</a><hr>");
  require('conn.php');

  $sql="select sno,sname,sex,major,syear,avr
  from student order by sno";
  $result=oci_parse($conn,$sql);   
  oci_execute($result);
  while ($row = oci_fetch_array($result,OCI_NUM)){
    echo("$row[0]-$row[1]-$row[2]-$row[3]-$row[4]-$row[5] <br>");  }
  oci_free_statement($result);
  oci_close($conn);
?>

- student select 문장

 

<?php
  echo("<a href=./st_in.html>자료 입력하기</a><hr>");
  require('conn.php');

  $sql="select pno,pname,section,orders,hiredate
  from professor order by pno";
  $result=oci_parse($conn,$sql);
  oci_execute($result);
  while ($row = oci_fetch_array($result,OCI_NUM)){
    echo("$row[0]-$row[1]-$row[2]-$row[3]-$row[4] <br>");  }
  oci_free_statement($result);
  oci_close($conn);
?>

- professor select 문장

 

 

 


위에까지 사용한 select 문장은 컬럼이 너무 많으면 어떤데이터가 들어가는지 모른다.

그래서 배열의 첨자를 컬럼 이름으로 나오게한다.

<?
echo("<a href=./st_in.html>자료 입력하기</a><hr>");
  require('conn.php');
  $sql="select sno, sname, sex, major, syear, to_char(avr,'0.00') avr
  from student order by sno";
  $result=oci_parse($conn,$sql);
  oci_execute($result);
  echo("<table border='0'>");
  while ($row = oci_fetch_array($result, OCI_ASSOC)){
    echo("
          <tr>
            <td width='50'><p align='center'>$row[SNO]</p></td>
            <td width='80'><p align='center'>$row[SNAME]</p></td>
            <td width='20'><p align='center'>$row[SEX]</p></td>
            <td width='20'><p align='center'>$row[SYEAR]</p></td>
            <td width='50'><p align='center'>$row[MAJOR]</p></td>
            <td width='30'><p align='center'>$row[AVR]</p></td>
          </tr>
          ");
        }
      echo("</table>");
      oci_free_statement($result);
      oci_close($conn);
?>

- 개선된 st_vi select 문 소스코드이다.

<?
echo("<a href=./pr_in.html>자료 입력하기</a><hr>");
  require('conn.php');
  $sql="select pno, pname, section, orders, to_char(hiredate,'YYYY/MM/DD') hiredate
  from professor order by pno";
  $result=oci_parse($conn,$sql);
  oci_execute($result);
  echo("<table border='0'>");
  while ($row = oci_fetch_array($result, OCI_ASSOC)){
    echo("
          <tr>
            <td width='50'><p align='center'>$row[PNO]</p></td>
            <td width='80'><p align='center'>$row[PNAME]</p></td>
            <td width='50'><p align='center'>$row[SECTION]</p></td>
            <td width='50'><p align='center'>$row[ORDERS]</p></td>
            <td width='50'><p align='center'>$row[HIREDATE]</p></td>
          </tr>
          ");
        }
      echo("</table>");
      oci_free_statement($result);

-개선된 pr_vi select문 소스코드이다.

 

 


 

오라클

-파라미터 파일은 임의로 지정할수없다.

: 이름,위치 그대로 있어야한다.

  읽기전 다른거를 안읽기 때문에 어디있는지 모른다.

  위치는 oracle_home/dbs 에 있어야한다.

 파라미터 파일은 두가지로 분류된다.

Pfile, SPfile . 둘 중 우리는 Pfile은 사용하지않고 SPfile만 쓴다.

인스턴스가 여러가지 있기때문에 이름이 필요하다.

 

  • SPfile

날짜 출력 포맷을 우리는 변경해 봤다. nls_date_format 같은게 파라미터 파일이다.

SPfile은 보거나 바로 만들수 없다.그렇기 때문에 일단 Pfile을 먼저만들고 내용을 똑같이 SPfile을 만들수 있다.

그 후 Pfile의 위치를 바꾸거나 Pfile을 삭제한다. Pfile과 SPfile이 같은 위치에 존재하면 시스템이 작동하지 않는다.

 

alter system set 으로 파라미터에 있는 값을 수정한다.

옵션이 세가지

spfile : spfile 수정

memory : memory만 수정

both : 다바꾼다.

 

nomount 상태에서 mount로 올라가기위해선

alter database mount

mount 에서 open 으로 올라가기위해선

alter database open이다.

startup 의 기본값은 open 옵션은 nomount, mount 이 있다.

shut down - ABORT정전났을때 오류를 잡아준다 IMMEDIATE 제대로 죽이는것 

               | TRANSACTIONAL 백그라운드프로세서가 살아있을땐안죽는다.

 

 

 

 

반응형

'2019 > 학원' 카테고리의 다른 글

3장.ORACLE 셧다운부터 스타트업까지의 과정  (0) 2019.12.31
1.CentOS7에 오라클 설치  (0) 2019.12.30
12.30 학원  (0) 2019.12.30
12.26 학원  (0) 2019.12.26
12.24 학원  (0) 2019.12.24

+ Recent posts