ODBC는 MS Access와 같은 데이터 원본에 연결할 수 있도록 연결 통로를 제공해주는 애플리케이션 프로그래밍 인터페이스 (API) 입니다.
ODBC 연결 생성하기
ODBC 연결을 통해 (ODBC 연결이 사용가능하다면) 그 어떤 데이터베이스나 혹은 네트워크상의 그 어떤 컴퓨터에라도 연결 할 수 있습니다.
MS Access 데이터베이스로 연결을 생성하는 방법은 아래와 같습니다:
- 제어판에서 관리도구 를 엽니다.
- 데이터 원본 (ODBC) 을 더블클릭해서 엽니다.
- 시스템 DSN 탭을 선택합니다.
- 시스템 DSN탭의 추가를 클릭합니다.
- Microsoft Access Driver를 선택한 다음, 마침을 클릭합니다.
- 창이 하나 나타나면, 선택 버튼을 클릭한 다음 Access 데이터베이스의 위치를 지정해 줍니다.
- 데이터 원본 이름 (DSN)란에 사용할 이름을 입력합니다.
- 확인을 클릭합니다.
이 설정은 웹사이트가 위치한 컴퓨터에서 이루어져야만 합니다. 컴퓨터에서 IIS 서버를 운영하고 있다면 위 설정이 잘 동작하긴 하지만, 웹사이트가 원격 서버에 위치해 있을경우 해당 서버에 물리적으로 접근할 권한을 가지고 있거나 혹은 웹호스팅 하는곳에 DSN을 설정하도록 요청해야 합니다.
ODBC에 연결하기
odbc_connect() 함수가 ODBC 데이터 원본에 연결할때 사용됩니다. 이 함수는 4개의 매개변수를 받을 수 있습니다.
(데이터 원본 이름, 사용자이름, 암호, 그리고 부가적인 옵션으로 커서타입)
odbc_exec() 함수는 SQL 구문을 실행할때 사용됩니다.
예제
아래 예제는 northwind라는 이름을 가진 DSN으로 연결을 생성합니다. (사용자 이름 無, 암호 無)
연결 이후엔 SQL 구문을 변수에 저장한 다음 실행시킵니다:
$conn=odbc_connect('northwind','',''); $sql="SELECT * FROM customers"; $rs=odbc_exec($conn,$sql); |
레코드 반환받기
odbc_fetch_row() 함수는 결과셋으로부터 레코드들을 반환받는데 사용됩니다. 행을 반환할 수 있을때 True를, 없을때 false를 반환합니다.
이 함수는 2개의 매개변수를 받을 수 있습니다 (ODBC 결과 구분자, 부가적인 옵션으로 행 번호)
odbc_fetch_row($rs) |
레코드로부터 필드 반환받기
odbc_result() 함수는 레코드로부터 필드들을 읽어들일때 사용됩니다.
이 함수는 2개의 매개변수를 받을 수 있습니다. (ODBC 결과 구분자, 필드 번호나 이름)
아래쪽에 있는 코드는 레코드로부터 첫번째 필드의 값을 반환받습니다:
$compname=odbc_result($rs,1); |
아래쪽의 코드는 "CompanyName"이란 필드로부터 값을 반환받습니다:
$compname=odbc_result($rs,"CompanyName"); |
ODBC 연결 종료하기
odbc_close() 함수는 ODBC 연결을 닫을때 사용됩니다.
odbc_close($conn); |
ODBC 예제
아래의 예제는 어떻게 데이터베이스로 연결을 생성하고, 결과셋을 형성하며, HTML 테이블 형태로 데이터를 표시해 줄 수 있는지 보여주고 있습니다.
<html> <body> <?php $conn=odbc_connect('northwind','',''); if (!$conn) {exit("Connection Failed: " . $conn);} $sql="SELECT * FROM customers"; $rs=odbc_exec($conn,$sql); if (!$rs) {exit("Error in SQL");} echo "<table><tr>"; echo "<th>Companyname</th>"; echo "<th>Contactname</th></tr>"; while (odbc_fetch_row($rs)) { $compname=odbc_result($rs,"CompanyName"); $conname=odbc_result($rs,"ContactName"); echo "<tr><td>$compname</td>"; echo "<td>$conname</td></tr>"; } odbc_close($conn); echo "</table>"; ?> </body> </html> |