ให้เรตสมาชิก: 2 / 5

ดาวใช้งานดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

สารบัญ

เรียบเรียงจากเอกสารต้นฉบับ ADOdb MySQL Tutorial " http://php.weblogs.com/adodb_tutorial " โดย John Lim
You say eether and I say eyether,
You say neether and I say nyther;
Eether, eyether, neether, nyther -
Let's call the whole thing off !

You like potato and I like po-tah-to,
You like tomato and I like to-mah-to;
Potato, po-tah-to, tomato, to-mah-to -
Let's call the whole thing off !

เพลง นี้เกี่ยวกับคนสองคนที่แตกต่างกัน แต่รักกัน และพยายามที่จะเข้าใจซึ่งกันและกัน พยายามประณีประณอม และหาพื้นฐานการอยู่ร่วมกัน ซึ่งเป็นใจความสำคัญของบทความนี้

เรา พบว่า PHP ช่วยในการสร้างเว็บไซต์แบบ dynamic เพราะเป็นภาษาที่มีความยุ่งยากน้อยที่สุด และสนุกที่สุด การสร้างเว็บไซต์เหล่านี้ เราจำเป็นต้องใช้ฐานข้อมูลในการถึงข้อมูลเพื่อการ login, ในการดึงข้อมูลข่าวสารเพื่อแสดงบนเว็บเพจ และในการจัดเก็บข้อมูลที่เรา post ในกระทู้ ดังนั้นเราจึงใช้ MySQL ซึ่งเป็นระบบฐานข้อมูลที่อยู่ในความนิยมสำหรับทำงานเหล่านี้ แต่เมื่อเราพบว่า เว็บไซต์ของเราเป็นที่นิยมมากกว่าที่เราคิดไว้ เราก็จะพบว่า MySQL ไม่สามารถจัดการงานข้อมูลเยอะๆ ของเราได้ มันก็ถึงเวลาสมควรที่จะเปลี่ยนไปใช้ระบบฐานข้อมูลอื่นแล้ว

แต่ PHP ใช้การเข้าถึงระบบฐานข้อมูล ด้วยวิธีที่แตกต่างกัน ถ้าจะเข้าถึง MySQL เราจะใช้ mysql_connect() และเมื่อเราตัดสินใจที่จะ upgrade เป็น Oracle หรือ MS SQL Server เราจะใช้ ocilogon() หรือ mssql_connect() แทน และสิ่งที่เลวร้ายไปกว่านั้นก็คือ parameter ที่เราใช้สำหรับการเข้าถึงนั้นก็แตกต่างกันด้วยเช่นกัน ก็จะเหมือน ระบบฐานข้อมูลหนึ่งพูด po-tato อีกระบบฐานข้อมูลพูด pota-to

Let's call the whole thing off เลิกการเรียกใช้ทุกอย่าง

เมื่อ เป็นเช่นนี้ การใช้ database wrapper library เช่น ADODB จึงเป็นประโยชน์อย่างมาก เมื่อเราต้องการความมั่นใจในการใช้งานแบบ portability ซึ่งการใช้ wrapper library นี้ เราจะมี common API ที่รองรับการติดต่อกับระบบฐานข้อมูลใดๆ ก็ได้ ทำให้เราไม่จำเป็นต้องเปลี่ยนคำสั่งในการติดต่อฐานข้อมูลแต่ละชนิดทุกครั้ง ที่เราเปลี่ยนระบบฐานข้อมูล

ADODB ย่อมาจาก Active Data Objects DataBase ซึ่งปัจจุบันรองรับการทำงานกับ MySQL, PostgreSQL, Oracle, Interbase, Microsoft SQL Server, Access, FoxPro, Sybase, ODBC และ ADO เราสามารถดาวน์โหลด ADODB ได้จาก http://php.weblogs.com/adodb

ตัวอย่าง MySQL

แน่ นอนว่า ระบบฐานข้อมูลที่ใช้กันมากที่สุดกับ PHP คือ MySQL ดังนั้น เราคงคุ้นเคยกับ code ต่อไปนี้ มันจะติดต่อกับ MySQL Server ที่ localhost, ฐานข้อมูล คือ mydb และใช้คำสั่ง SQL select ซึ่งผลลัพธ์จะพิมพ์ออกมาทีละบรรทัด

// ทำการติดต่อไปยังฐานข้อมูล
$db = mysql_connect("localhost", "root", "password");
mysql_select_db("mydb",$db);
// ใช้คำสั่ง SQL
$result = mysql_query("SELECT * FROM employees",$db);
if ($result === false) die("failed");
// วนลูปแถวข้อมูลที่ได้มา
while ($fields = mysql_fetch_row($result)) {
// วนลูป field ในแถวข้อมูล
for ($i=0, $max=sizeof($fields); $i < $max; $i++) {
print $fields[$i].' ';
}
print "\n";
}

ถ้าเราใช้ ADODB เราจะได้ code เป็นดังนี้

include("adodb.inc.php");
$db = NewADOConnection('mysql');
$db->Connect("localhost", "root", "password", "mydb");
$result = $db->Execute("SELECT * FROM employees");
if ($result === false) die("failed");
while (!$result->EOF) {
for ($i=0, $max=$result->FieldCount(); $i < $max; $i++)
print $result->fields[$i].' ';
$result->MoveNext();
print "\n";
}

ดังนั้น ถ้าเราจะเปลี่ยนระบบฐานข้อมูลเป็น Oracle ก็สามารถทำได้ง่าย เพียงแค่เปลี่ยน code ในบรรทัดที่ 2 ให้เป็น

$db = NewADOConnection('oracle');

เรามาดูรายละเอียดของ code กัน

การติดต่อกับระบบฐานข้อมูล

include("adodb.inc.php");
$db = NewADOConnection('mysql');
$db->Connect("localhost", "root", "password", "mydb");

การ เขียน code เพื่อติดต่อกับระบบฐานข้อมูล มีความยุ่งยากกว่าของ MySQL เพราะความจำเป็นในการติดต่อของเรามันยุ่งยากกว่า ใน ADODB เราใช้วิธี object-oriented ในการจัดการความซับซ้อนของการจัดการระบบฐานข้อมูลหลายๆ ระบบ เรามี class ต่างๆ ที่ใช้ในการจัดการระบบฐานข้อมูลที่แตกต่างกัน แต่ไม่ต้องกังวล ถ้าเราไม่คุ้นเคยกับการเขียน object-oriented ความซับซ้อนต่างๆ ถูกซ่อนไว้ภายใน function NewADOConnection() แล้ว

เพียง แค่จำไว้ว่า เราเพียงแค่ใช้ PHP code ในการระบุระบบฐานข้อมูลที่เราจะติดต่อด้วยเท่านั้น โดยการเรียก NewADOConnection(databasedriver) ซึ่ง database driver ที่ใช้คือ mysql, mssql, oracle, oci8, postgres, sybase, vfp, access, ibase และอื่นๆ อีกมากมาย

หลังจากนั้น ในตัวอย่าง เราจึงสร้าง class สำหรับการติดต่อระบบฐานข้อมูลใหม่ โดยใช้ NewADOConnection() และสุดท้ายทำการติดต่อระบบฐานข้อมูลโดยใช้ $db->Connect()
กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
Features Review : Plugin Editors XTD Multicontent untuk mengeluarkan artikel dari Master Site ke Web Clien
โดย abdkode อ 19 ก.พ. 2019 6:52 pm บอร์ด Bahasa Language
0
1
อ 19 ก.พ. 2019 6:52 pm โดย abdkode
สิ่งที่อยากที่สุดของการทำงาน
โดย จันนุสรณ์ ดีแก่ อ 19 ก.พ. 2019 6:52 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
5
อ 19 ก.พ. 2019 6:52 pm โดย จันนุสรณ์ ดีแก่
Features Review : Mod MDFiles Popular modul menyenaraikan fail popular
โดย abdkode อ 19 ก.พ. 2019 5:41 pm บอร์ด Bahasa Language
0
2
อ 19 ก.พ. 2019 5:41 pm โดย abdkode
Features Review : Mod MDFiles Featured memaparkan fail-fail yang dipilih dari MDFile untuk dipaparkan pada Joomla
โดย abdkode อ 19 ก.พ. 2019 4:39 pm บอร์ด Bahasa Language
0
1
อ 19 ก.พ. 2019 4:39 pm โดย abdkode
Features Review : Components Mjform komponen untuk membuat borang laman web
โดย abdkode อ 19 ก.พ. 2019 3:23 pm บอร์ด Bahasa Language
0
6
อ 19 ก.พ. 2019 3:23 pm โดย abdkode
อบากทราบวิธีการ ส่งค่ากลับมายัง ส่วนที่เป็น sub comment ลาสุด ใน phpbb
โดย Ittichai_chupol อ 19 ก.พ. 2019 11:45 am บอร์ด Programming - PHP
0
4
อ 19 ก.พ. 2019 11:45 am โดย Ittichai_chupol
งานประจำวันที่ 19 กุมภาพันธ์ 2562
โดย Four อ 19 ก.พ. 2019 10:36 am บอร์ด M077 - อิษยา งามสอาด
2
3
อ 19 ก.พ. 2019 7:21 pm โดย Four
คู่มือวิธีการลบแบบเก็บไว้ในถังขยะใน phpbb โดยแอดมินเท่านั้นที่สามารถเห็นในส่วนนี้ User อื่นไม่สามารถทำได้
โดย จันนุสรณ์ ดีแก่ อ 19 ก.พ. 2019 9:15 am บอร์ด phpBB user Guide Knowledge
0
14
อ 19 ก.พ. 2019 9:15 am โดย จันนุสรณ์ ดีแก่
R - mdsoft_partner_fields Module ปรับเพิ่มฟิลด์ lead > partner
โดย thatsawan จ 18 ก.พ. 2019 11:18 pm บอร์ด MlineCRM Line + MD-CRM
1
3
อ 19 ก.พ. 2019 6:51 am โดย mindphp
อยากทราบวิธีการดูดข้อมูลจากเว็บอื่น
โดย newbie จ 18 ก.พ. 2019 3:05 pm บอร์ด Programming - PHP
0
20
จ 18 ก.พ. 2019 3:05 pm โดย newbie
Q - ตัว search tools ใน Joomla 4 ลอง search แล้วไม่สามารถเคลียได้
โดย Parichat ส 16 ก.พ. 2019 6:57 pm บอร์ด Joomla Dev
0
3
ส 16 ก.พ. 2019 6:57 pm โดย Parichat
อยากทราบวิธีการ ปิด ไม่ใช้ เทมเพลตกลายเป็น เว็บ responsive ใน phpbb
โดย Ittichai_chupol ส 16 ก.พ. 2019 6:56 pm บอร์ด Programming - PHP
0
19
ส 16 ก.พ. 2019 6:56 pm โดย Ittichai_chupol
อยากทราบวิธีการแก้ไข้ ปัญหา ขณะเปิดใช้งาน Extension ใน phpbb
โดย Ittichai_chupol ส 16 ก.พ. 2019 6:22 pm บอร์ด Programming - PHP
0
17
ส 16 ก.พ. 2019 6:22 pm โดย Ittichai_chupol
อยากทราบวิธีการตรวจสอบสิทธิ์ ของผู้ใช้งาน
โดย Ittichai_chupol ส 16 ก.พ. 2019 1:26 pm บอร์ด Programming - PHP
0
22
ส 16 ก.พ. 2019 1:26 pm โดย Ittichai_chupol
วิธีแก้ปัญหาบันทึกข้อมูลไม่ลงใน Joomla Version 4
โดย Parichat ส 16 ก.พ. 2019 11:49 am บอร์ด Joomla Dev
0
2
ส 16 ก.พ. 2019 11:49 am โดย Parichat
ทำความรู้จักกับ วิธีจัดการการแจ้งเตือน พร้อมวิธีการบันทึกการแจ้งเตือนว่าอ่านแล้ว ในหลายๆหัวข้อพร้อมกัน
โดย จันนุสรณ์ ดีแก่ ส 16 ก.พ. 2019 10:26 am บอร์ด phpBB user Guide Knowledge
0
27
ส 16 ก.พ. 2019 10:26 am โดย จันนุสรณ์ ดีแก่
งานประจำวันที่ 16 กุมภาพันธ์ 2562
โดย Four ส 16 ก.พ. 2019 9:47 am บอร์ด M077 - อิษยา งามสอาด
1
11
ส 16 ก.พ. 2019 7:13 pm โดย Four
Mod MDFiles Popular 모듈 소개 MDFile에서 파일을 가져와 표시
โดย wipaporn ศ 15 ก.พ. 2019 6:06 pm บอร์ด korean Language - 한국어
0
19
ศ 15 ก.พ. 2019 6:06 pm โดย wipaporn
MDFiles Featured modules를 소개하면 MDFile에서 파일을 가져와 보여준다.
โดย wipaporn ศ 15 ก.พ. 2019 6:06 pm บอร์ด korean Language - 한국어
0
20
ศ 15 ก.พ. 2019 6:06 pm โดย wipaporn
Q - เกิดerror โค้ด ขึ้นว่า AttributeError: 'TextTestResult' object has no attribute 'openwed_Login'
โดย ธวัชชัย แสนหาญ ศ 15 ก.พ. 2019 5:55 pm บอร์ด Programming - C/C++ & java & Python
0
30
ศ 15 ก.พ. 2019 5:55 pm โดย ธวัชชัย แสนหาญ