ODBC는 MS Access와 같은 데이터 원본에 연결할 수 있도록 연결 통로를 제공해주는 애플리케이션 프로그래밍 인터페이스 (API) 입니다.




ODBC 연결 생성하기


ODBC 연결을 통해 (ODBC 연결이 사용가능하다면) 그 어떤 데이터베이스나 혹은 네트워크상의 그 어떤 컴퓨터에라도 연결 할 수 있습니다.


MS Access 데이터베이스로 연결을 생성하는 방법은 아래와 같습니다:


  1. 제어판에서 관리도구 를 엽니다.
  2. 데이터 원본 (ODBC) 을 더블클릭해서 엽니다.
  3. 시스템 DSN 탭을 선택합니다.
  4. 시스템 DSN탭의 추가를 클릭합니다.
  5. Microsoft Access Driver를 선택한 다음, 마침을 클릭합니다.
  6. 창이 하나 나타나면, 선택 버튼을 클릭한 다음 Access 데이터베이스의 위치를 지정해 줍니다.
  7. 데이터 원본 이름 (DSN)란에 사용할 이름을 입력합니다.
  8. 확인을 클릭합니다.


이 설정은 웹사이트가 위치한 컴퓨터에서 이루어져야만 합니다. 컴퓨터에서 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>