ให้เรตสมาชิก: 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()
กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
รวมเว็บไซต์เช็คDNS และวิธีเช็คDNS คำสั่ง nslookup ,IP domainname
โดย aninthana พฤ 22 ส.ค. 2019 5:45 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
12
พฤ 22 ส.ค. 2019 5:45 pm โดย aninthana
หลักสำคัญในการร่างสัญญา
โดย EyePornnipa พฤ 22 ส.ค. 2019 5:33 pm บอร์ด M089 - นางสาวพรนิภา ราชธานี
0
12
พฤ 22 ส.ค. 2019 5:33 pm โดย EyePornnipa
เที่ยว & กินไม่หยุด...ที่ตลาดวังหลัง จ.กรุงเทพมหานคร ฯ
โดย Patipat พฤ 22 ส.ค. 2019 5:05 pm บอร์ด M088 - ปฏิภัทร สารธรรม
0
5
พฤ 22 ส.ค. 2019 5:05 pm โดย Patipat
ถามเกี่ยวกับ Python GUI ( Tkinter )
โดย New Pimsean พฤ 22 ส.ค. 2019 4:33 pm บอร์ด Programming - C/C++ & java & Python
0
3
พฤ 22 ส.ค. 2019 4:33 pm โดย New Pimsean
ถ้าต้องการจดโดเมนเนม ต้องทำอย่างไร
โดย aninthana พฤ 22 ส.ค. 2019 3:20 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
17
พฤ 22 ส.ค. 2019 4:32 pm โดย thorng1
วิธีการทำเว็บไซต์ 2 ภาษา ในภาษา python
โดย jirawoot พฤ 22 ส.ค. 2019 3:20 pm บอร์ด Python Knowledge
0
3
พฤ 22 ส.ค. 2019 3:20 pm โดย jirawoot
จ่ายหนี้..น้อยลง!! ธนาคารพาณิชย์ ประกาศลดดอกเบี้ยเงินกู้
โดย promotion พฤ 22 ส.ค. 2019 3:17 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
6
พฤ 22 ส.ค. 2019 3:17 pm โดย promotion
Q - อยากทราบวิธีแก้หน้า Lost password ครับ
โดย jamepiyawat พฤ 22 ส.ค. 2019 11:24 am บอร์ด Joomla Development
8
48
พฤ 22 ส.ค. 2019 4:30 pm โดย thorng1
ขั้นตอนใดในกระบวนการสร้างต้นแบบที่จะทำให้ต้นแบบเกิดความสมบูรณ์เเละพร้อมนำไปใช้งานมากที่สุด เพราะเหตุใด
โดย Anonymous พฤ 22 ส.ค. 2019 1:19 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
6
พฤ 22 ส.ค. 2019 1:19 pm โดย บุคคลทั่วไป
R - ต้องการเพิ่มการแสดงรายการบนใบแจ้งหนี้
โดย EyePornnipa พฤ 22 ส.ค. 2019 12:43 pm บอร์ด M.D.Soft Co.,Ltd. - Tester
0
3
พฤ 22 ส.ค. 2019 12:43 pm โดย EyePornnipa
เขียนวิธีการเดินจากบ้านมา กทม จากคลอง 3 หมู่บ้านพฤกษา 13 มา เสนานิคม
โดย aninthana พฤ 22 ส.ค. 2019 12:21 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
17
พฤ 22 ส.ค. 2019 2:25 pm โดย mindphp
note
โดย aninthana พฤ 22 ส.ค. 2019 11:10 am บอร์ด M092 - อนินธนา บุญยัง
1
7
พฤ 22 ส.ค. 2019 6:38 pm โดย aninthana
Work's on Hand อนินธนา บุญยัง M092
โดย aninthana พฤ 22 ส.ค. 2019 11:10 am บอร์ด M092 - อนินธนา บุญยัง
1
12
พฤ 22 ส.ค. 2019 6:34 pm โดย aninthana
Job description ที่เคยทำมาแต่ละบริษัท โดยระบุประเภทธุรกิจทำมา
โดย aninthana พฤ 22 ส.ค. 2019 11:08 am บอร์ด M092 - อนินธนา บุญยัง
1
16
พฤ 22 ส.ค. 2019 11:37 am โดย aninthana
งานประจำวันที่ 22 สิงหาคม 2562
โดย aninthana พฤ 22 ส.ค. 2019 11:04 am บอร์ด M092 - อนินธนา บุญยัง
1
18
พฤ 22 ส.ค. 2019 11:06 am โดย aninthana
งานประจำวันที่ 22 สิงหาคม 2562
โดย jirawoot พฤ 22 ส.ค. 2019 10:23 am บอร์ด M090 - นายจิระวุฒิ อัครลิขิตกุล
0
3
พฤ 22 ส.ค. 2019 10:23 am โดย jirawoot
งานประจำวันที่ 22 สิงหาคม 2562
โดย chatee supasand พฤ 22 ส.ค. 2019 10:10 am บอร์ด MT33 - นายชาตรี สุภาแสน
0
1
พฤ 22 ส.ค. 2019 10:10 am โดย chatee supasand
งานประจำวันที่ 22 สิงหาคม 2562
โดย Patipat พฤ 22 ส.ค. 2019 10:07 am บอร์ด M088 - ปฏิภัทร สารธรรม
0
3
พฤ 22 ส.ค. 2019 10:07 am โดย Patipat
งานประจำวันที่ 22 กรกฎาคม 2562
โดย jamepiyawat พฤ 22 ส.ค. 2019 10:01 am บอร์ด M084 - นายปิยวัช เชาว์วิมล
0
2
พฤ 22 ส.ค. 2019 10:01 am โดย jamepiyawat
งานประจำวันที่ 22 สิงหาคม 2562
โดย EyePornnipa พฤ 22 ส.ค. 2019 9:40 am บอร์ด M089 - นางสาวพรนิภา ราชธานี
0
6
พฤ 22 ส.ค. 2019 9:40 am โดย EyePornnipa