ให้เรตสมาชิก: 1 / 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()
กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
MOD_MTB_NEWS_RECENT
Plugins Content - Page Navigation ในหลังบ้าน Joomla ใช้งานอย่างไร มีไว้นำทางข้อมูลข่าวสาร รึเป่าครับ
โดย บุคคลทั่วไป อ 30 พฤษภาคม 2017 3:31 am บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
1
7
อ 30 พฤษภาคม 2017 3:31 am โดย บุคคลทั่วไป
9 ประเภทโฆษณาบน Facebook (เฟซบุ๊ก)
โดย meeieis จ 29 พฤษภาคม 2017 3:33 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
24
จ 29 พฤษภาคม 2017 3:33 pm โดย meeieis
ข้อดีและข้อเสียของโปรแกรม OpenERP
โดย pleng จ 29 พฤษภาคม 2017 3:25 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
12
จ 29 พฤษภาคม 2017 3:25 pm โดย pleng
Facebook Ads Services บริการทำการตลาดผ่านเฟซบุ๊ก
โดย meeieis จ 29 พฤษภาคม 2017 2:33 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
18
จ 29 พฤษภาคม 2017 2:33 pm โดย meeieis
Facebook Marketing (เฟซบุ๊ก มาร์เก็ตติ้ง) การทำการตลาดบนเฟซบุ๊ก
โดย meeieis จ 29 พฤษภาคม 2017 1:56 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
25
จ 29 พฤษภาคม 2017 1:56 pm โดย meeieis
OpenERP คืออะไร
โดย pleng จ 29 พฤษภาคม 2017 1:07 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
11
จ 29 พฤษภาคม 2017 1:07 pm โดย pleng
รหัส กับโทรศัพท์ใน อีเมลล์ ถุกแฮค เปลี่ยน
โดย Jidtira Khongreang ส 27 พฤษภาคม 2017 12:02 pm บอร์ด Mobile Programming - Android, iOS, Window Phone
0
19
ส 27 พฤษภาคม 2017 12:02 pm โดย Jidtira Khongreang
เพิ่งติด ais fiber จะต่อเน็ตกับคอมตั้งโต๊ะ winxp ต้องลงโปรแกรมไรเพิ่มครับ ขอบคุณครับ
โดย ทวีพงษ์ สมจารย์ ส 27 พฤษภาคม 2017 1:08 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
18
ส 27 พฤษภาคม 2017 1:08 am โดย ทวีพงษ์ สมจารย์
เงินได้พึงประเมินขั้นต่ำที่ผู้มีเงินได้ต้องยื่นแบบแสดงรายการภาษีปี 2560
โดย pleng ศ 26 พฤษภาคม 2017 2:25 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
20
ศ 26 พฤษภาคม 2017 2:25 pm โดย pleng
INDEX - รวมบทความ/คำถาม ของ โปรแกรมบัญชี Express
โดย pleng ศ 26 พฤษภาคม 2017 10:36 am บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
1
24
ศ 26 พฤษภาคม 2017 10:48 am โดย pleng
ส่วน main menu ของเว็บ ทำอย่างไรครับ
โดย toonytoony2004 พฤ 25 พฤษภาคม 2017 8:34 pm บอร์ด Joomla Development
1
31
พฤ 25 พฤษภาคม 2017 8:34 pm โดย tsukasaz
Q - code ส่วนของ javascript ไม่รันตามลำดับที่วางไว้ต้องแก้อย่างไร
โดย jay_limm พฤ 25 พฤษภาคม 2017 7:13 pm บอร์ด Odoo
0
4
พฤ 25 พฤษภาคม 2017 7:13 pm โดย jay_limm
คำถาม Mysql - Stored procedure มันเก็บ cache ได้มั้ยค่ะ
โดย thatsawan พฤ 25 พฤษภาคม 2017 5:25 pm บอร์ด SQL - Database
3
23
พฤ 25 พฤษภาคม 2017 5:25 pm โดย mindphp
phpmaker ผมโดนสั่งให้ใช้ PHPMaker สร้างหน้าเว็ป
โดย บุคคลทั่วไป พฤ 25 พฤษภาคม 2017 4:10 pm บอร์ด Programming - PHP
1
33
พฤ 25 พฤษภาคม 2017 4:10 pm โดย บุคคลทั่วไป
ความคืบหน้า / Progress
โดย mindphp พฤ 25 พฤษภาคม 2017 4:01 am บอร์ด OpenERPThailand.org
1
3
พฤ 25 พฤษภาคม 2017 4:01 am โดย mindphp
การรับชำระเงิน ในโปรแกรมบัญชี Express
โดย pleng พ 24 พฤษภาคม 2017 6:26 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
23
พ 24 พฤษภาคม 2017 6:26 pm โดย pleng
การบันทึกรายการรับคืน ในโปรแกรมบัญชี Express
โดย pleng พ 24 พฤษภาคม 2017 4:46 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
21
พ 24 พฤษภาคม 2017 4:46 pm โดย pleng
การบันทึกทำ รายการลดหนี้ ส่งคืนสินค้า ในโปรแกรมบัญชี Express
โดย pleng พ 24 พฤษภาคม 2017 3:57 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
24
พ 24 พฤษภาคม 2017 3:57 pm โดย pleng
การเก็บค่าเวลา หาก input วินาทีมากกว่าหรือเท่ากับ 60 วินาที ให้เก็บเป็นนาที
โดย moomai พ 24 พฤษภาคม 2017 3:46 pm บอร์ด PHP Knowledge
0
36
พ 24 พฤษภาคม 2017 3:46 pm โดย moomai
เพิ่มค่าลดหย่อนให้บุคคลธรรมดา ปี 2560
โดย pleng พ 24 พฤษภาคม 2017 2:56 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
21
พ 24 พฤษภาคม 2017 2:56 pm โดย pleng