오라클과 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> <input type="text" name="sno"></td>
</tr>
<tr>
<td width="50"><p align="center">이름</p></td>
<td> <input type="text" name="sname"></td>
</tr>
<tr>
<td width="50"><p align="center">성별</p></td>
<td> 남<input type="radio" name="sex" value="남">,
여<input type="radio" name="sex" value="여"></td>
</tr>
<tr>
<td width="50"><p align="center">학과</p></td>
<td> <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> 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> <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> <input type="text" name="pno"></td>
</tr>
<tr>
<td width="50"><p align="center">이름</p></td>
<td> <input type="text" name="pname"></td>
</tr>
<tr>
<td width="50"><p align="center">학과</p></td>
<td> <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> 정교수<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> 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 |