PHP มีฟังก์ชันติดต่อกับตารางข้อมูลของฐานข้อมูลได้หลากหลายฐานข้อมูล ซึ่งแต่ละฐานข้อมูลก็จะใช้ฟังก์ชันไม่เหมือนกัน บทนี้ผมขอเลือกเอาฐานข้อมูลที่เราพบเห็นกันบ่อยๆก็คือของ Access นั่นก็จะหมายถึง PHP นี้จะเขียนเพื่อใช้กับวินโดว์นะครับ ส่วนของ Linux ขอเก็บเอาไว้ก่อน

DSN & ODBC driver
ก่อนอื่นต้องรู้จักศัพท์ที่เขียนว่า DSN และ ODBC driver ก่อนครับ

DSN ย่อมาจาก Data Source Name แปลตามตัวก็จะเป็นชื่อที่บอกหรือสามารถอ้างไปหาข้อมูลได้ เราจะใช้ชื่อ DSN นี้แหละครับในการอ้างถึงข้อมูลที่จะนำมาใช้กับ PHP ในบทนี้

ODBC driver ก็ย่อมาจาก Open DataBase Connectivity driver ก็แปลว่าเป็น driver ที่จะใช้ทำหน้าที่ติดต่อกับฐานข้อมูล การที่ต้องอาศัย driver ก็เพราะฐานข้อมูลต่างๆไม่ได้มีความเหมือนกันจึงไม่สามารถเรียกใช้ข้อมูลจากฐานข้อมูลอื่นๆได้โดยตรง ต้องอาศัยโปรแกรมเข้ามาช่วยจัดการให้ เช่นหากจะเข้าไปใช้ข้อมูลของ Access ก็ต้องอาศัยการติดต่อผ่านเข้าไปทาง Access ODBC driver โดยที่ ODBC driver นี้จะมีมาให้พร้อมกับโปรแกรม Access เพื่อให้โปรแกรมอื่นที่ไม่ใช่ Access สามารถใช้ข้อมูลจากฐานข้อมูลของ Access ได้ เช่นเราจะใช้ PHP (ซึ่งก็ไม่ใช่โปรแกรมที่จัดการด้ารฐานข้อมูลโดยตรง) ติดต่อเข้าไปหาข้อมูล ผ่านทาง ODBC นี้แหละครับ


Set up DSN ก่อน

วิธีการก็คือให้ไปที่ control panel แล้วเลือกไอคอน ODBC ดังรูป





เปิดเข้าไปจะได้ดังรูป





จากรูปหากต้องการทราบว่าเครื่องเรามี ODBC driver อะไรบ้างติดตั้งอยู่ก็ click ที่ tab ODBC driver และการกำหนด DSN เพื่อนำไปใช้งานกับ PHP หรือ ASP หรือโปรแกรมอะไรก็ตามที่จะใช้งาน ODBC ก็จะกำหนดที่ DSN ให้ดูจากรูป โดย DSN ที่จะนำไปใช้จะเป็น System DSN ดังที่แสดงในรูป

แต่ละ DSN ก็จะถูกำหนดให้ติดต่อกับฐานข้อมูลอะไร ใช้อะไรเป็น OBDC เป็นต้น ดังรูปต่อไปจะเป็นตัวอย่างของ DSN ที่ชื่อ phptest ซึ่งผมกำหนดให้ใช้ในการติดต่อฐานข้อมูล Access แน่นอน ODBC driver ฏ้ย่อมจะเป็นของ Access ครับ ดูรูปเลยครับ





จากรูปจะเป็นว่าตัว DSN นี้จะชี้ไปหาแฟ้มข้อมูลที่ชื่อ nwind.mdb ที่เก็บที่ drive d: หากต้องการเปลี่ยนแปลงแก้ไขก็สามารถทำการ select ใหม่ได้ครับ ทำนองเดียวกันหากยังไม่มี DSN ก็สามารถ Add ขึ้นมาใหม่ แล้วก็มากำหนดค่าต่างๆได้ คิดว่าคงไม่ยาก ลองทำดูนะครับ


ฟังก์ชันที่ต้องใช้
เอากันแบบข้นๆนะครับ น้ำไม่ต้อง ฟังชันที่จำเป็นจะมี

odbc_connect() ใชในการติดต่อฐานข้อมูล
odbc_exec() ใชทำงานกับตารางข้อมูลโดยอาศัยคำสั่งของภาษา SQL
odbc_num_fields() ใช้หาจำนวนคอลัมน์หรือ field ของตารางข้อมูลผลลัพธ์ที่เกิดจากคำสั่ง SQL
odbc_field_name() ใช้หาชื่อคอลัมน์
odbc_fetch_row() ใช้ดึงข้อมูลจากรายการข้อมูลในตาราง
odbc_result() ใช้ดึงข้อมูลจากรายการข้อมูลคอลัมน์ในตาราง
odbc_close() ใช้ยกเลิกหรือปิดการติดต่อฐานข้อมูล

ที่บอกครับ เอาแบบข้นๆ ดังนั้นในแต่ละฟังก์ชัน ผมขอให้ดูการเรียกใช้จริงๆ จากตัวอย่างซอร์โค้ดต่อไปนี้ครับ ขอให้ดูไปตามลำดับ ซึ่งฟังก์ชันแต่ละฟังก์ชันจะต้องมีการผ่านค่าเข้าไปด้วยก็พิจารณาดูเป็นตัวๆไปครับ จะมี comment ให้ด้วย ดังนี้

ซอร์ซโค้ด


<?
/*
กำหนดค่า DSN หากฐานข้อมูลต้องการ User และ Password ก็ให้กำหนดด้วย 
เช่นจะใช้ DSN ชื่อ phpcount ส่วน user และ password ไม่ใช้ก็ดังนี้ 
*/
$dsn="phpcount";
$uid="";
$pwd="";

/*
 ฟังก์ชันติดต่อ ต้องการให้ผ่านค่าทั้ง 3 เข้าไป และจะคืนค่าออกมา เราก็รับค่าที่คืนออกมาลงตัวแปร 
เช่นลงที่ hdn โดยที่หากติดต่อสำเร็จ hdn จะมีค่าเป็นหมายเลขบวกเพื่อนำใชกับฟังก์ชันอื่นต่อไป
หากติดต่อไม่ได้ hdn จะเป็นเท็จ ก็ควรจะมีการตรวจสอบว่า เป็นเท็จหรือไม่ 
หากใช่ก็จะได้ให้ลิกงานเลย แต่ในที่นี้ผมไม่ได้เขียนเอาไว้ ให้ทำเองครับ
*/
$hdn = odbc_connect($dsn,$uid,$pwd);

// กำหนดคำสั่ง SQL ที่จะใช้ และใช้
$sql="select * from ecard";
$fdn= odbc_exec($hdn, $sql);

//หาจำนวนคอลัมน์และนำชื่อคอลัมน์ออกมาแสดงไปทีละคอลัมน์
$nf= odbc_num_fields($fdn); 
echo "<table border=1><tr>";
for($i=1;$i<=$nf;$i++){ 
	echo "<td>",odbc_field_name($fdn,$i),"</td>";
	}
echo "</tr>";

// แสดงรายการไปทีละรายการ รายการละทีคอลัมน์จนกว่าจะหมด
while (odbc_fetch_row($fdn)){
for($i=1;$i<=$nf;$i++){ 
	echo "<td>",odbc_result($fdn,$i),"</td>";
	}
echo "</tr>";
}
echo "</table>";

// ยกเลิก ปิดการติดต่อ
odbc_close($hdn);
?>

 

 

  © 2000, Integrated World Tech Co.,Ltd , All Rights Reserved. Thairegister is a service mark of In and Intergrated World Tech Co.,Ltd. Additional copyright and trademark information.