Mindphp.com เว็บ สอนสร้างเว็บไซต์ ฐานข้อมูล php Javascript Ajax Jquery Html CSS CMS CRM และ เว็บเซอเวอร์ Hosting Web Server สอน Joomla phpbb JpGraph
Home บทความ SQL - MySql ADODB เขียน php เพื่อใช้งาน กับ database ทุกตัว

ADODB เขียน php เพื่อใช้งาน กับ database ทุกตัว

SQL - MySql

ดัชนีบทความ
ADODB เขียน php เพื่อใช้งาน กับ database ทุกตัว
การรันคำสั่ง SQL
Function อื่นๆ
การใช้ MetaTypes
สนับสนุนการใช้ Select Limit และ Top
ทุกหน้า
เรียบเรียงจากเอกสารต้นฉบับ 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()


User Rating: / 1
แย่ดีที่สุด 

บทความใกล้เคียง


หน้าเว็บบอร์ด Programming - PHP ตั้งกระทู้ใหม่ ใน Programming - PHP, phpBB3, SMF, Joomla, Wordpress, CMS CRM ตั้งกระทู้ใหม่ ใน phpBB3, SMF, Joomla, Wordpress, CMS CRM, JavaScript & Jquery Ajax ตั้งกระทู้ใหม่ ใน JavaScript & Jquery Ajax, SQL - Database ตั้งกระทู้ใหม่ ใน SQL - Database, ถาม - ตอบ คอมพิวเตอร์ ตั้งกระทู้ใหม่ ใน ถาม - ตอบ คอมพิวเตอร์, PHP Knowledge ตั้งกระทู้ใหม่ ใน PHP Knowledge, PHP News ตั้งกระทู้ใหม่ ใน PHP News, HTML CSS ตั้งกระทู้ใหม่ ใน HTML CSS, Free PHP Code Download script ตั้งกระทู้ใหม่ ใน Free PHP Code Download script, Web Hosting Review - Free Host Share Host VPS ตั้งกระทู้ใหม่ ใน Web Hosting Review - Free Host Share Host VPS
หัวข้อกระทู้ ตอบ เปิดดู โดย
buy tramadol er no rx cheap | how to get tramadol prescription
โดย AmanDonai 2012/05/17 10:16 บอร์ด Programming - PHP
0 18 วันนี้ 03:16
โดย AmanDonai
รบกวนสอบถามการรับค่าจาก textfile
โดย butterney 2012/05/15 19:16 บอร์ด Programming - PHP
6 111 2012/05/16 20:41
โดย butterney
มีปัญหาอ้ะครับ มาช่วยหน่อยนะครับ
โดย namkabz 2012/05/17 01:19 บอร์ด Programming - PHP
0 31 2012/05/16 18:19
โดย namkabz
สอบถาม เรื่อง "การสร้างดาต้าเบสสำหรับ Backup ครับ"
โดย Chayyim 2012/05/16 23:05 บอร์ด SQL - Database
0 39 2012/05/16 16:05
โดย Chayyim
ช่วยหน่อยคัฟ ไม่เก่ง PHP แต่พึ่งเริ่มทำงาน ติดปัญหาซะแร้ววว
โดย M&N 2012/05/04 16:03 บอร์ด Programming - PHP
3 423 2012/05/16 15:54
โดย tohkai_php
HTML5 สำหรับ Yii Framework
โดย mindphp 2012/04/17 09:32 บอร์ด PHP Knowledge
1 291 2012/05/16 15:50
โดย tohkai_php
รับสมัครพนังงานต่ำแหน่ง it support ครับ
โดย tohkai_php 2012/05/16 22:44 บอร์ด PHP News
0 43 2012/05/16 15:44
โดย tohkai_php
html5 + javascript เสมือน apps mobile เนียนมากๆครับ
โดย tohkai_php 2012/05/16 22:43 บอร์ด Free PHP Code Download script
0 42 2012/05/16 15:43
โดย tohkai_php
รบกวนขอความรู้ครับ
โดย Sum76 2009/02/06 20:13 บอร์ด Programming - PHP
3 391 2012/05/16 10:50
โดย malangtub
ขั้นตอนการทำงาน ระหว่าง Client - เว็บไซต์เรา และ facebook
โดย mindphp 2011/12/13 08:08 บอร์ด Programming - PHP
1 578 2012/05/16 10:45
โดย malangtub
ใช้ php สร้าง WebServices ด้วย PHPSoap
โดย batman1292 2012/05/08 03:02 บอร์ด PHP Knowledge
5 658 2012/05/16 10:35
โดย malangtub
ถามเกี่ยวกับสคริป php หน่อยคับ โทษทีถ้าถามผิดห้อง
โดย youscoms 2012/04/24 01:49 บอร์ด Programming - PHP
4 615 2012/05/16 10:24
โดย บุคคลทั่วไป
ปัญหาการติดตั้ง magento Database connection error.
โดย docman 2012/04/24 21:13 บอร์ด Programming - PHP
2 329 2012/05/16 10:22
โดย malangtub
php มีคำสั่ง block แถบเมนูไหมค่ะ
โดย NatoOne 2012/04/21 23:01 บอร์ด Programming - PHP
6 582 2012/05/16 10:21
โดย malangtub
Count down Javascript โปรเจ็คเกี่ยวกับการทำข้อสอบ
โดย ultraman_neww 2012/05/06 02:50 บอร์ด Programming - PHP
4 446 2012/05/16 10:16
โดย malangtub
ถามเกี่ยวกับหน้า login และ timestamp หน่อยครับ
โดย OneLifeBegin 2012/04/24 18:25 บอร์ด Programming - PHP
13 1595 2012/05/16 08:41
โดย ekaja
ที่ตั้งการ upload
โดย Pleumiie 2012/04/24 23:08 บอร์ด Programming - PHP
6 384 2012/05/16 08:30
โดย ekaja
เพิ่มพลังในการทำงานด้วยสิ่งนี้ดีกว่า อิอิ
โดย oliveen 2012/05/15 23:24 บอร์ด โหลดโปรแกรม พูดคุยเรื่องทั่วไป จับฉ่าย
1 240 2012/05/15 16:24
โดย starseed

New Members

AmanDonai : 17/05/2012 sirintra : 16/05/2012 ปาริชาติ รัชฎาศรี : 16/05/2012 margarin : 16/05/2012 Chayyim : 16/05/2012 masteriii : 16/05/2012 ekaja : 16/05/2012 starseed : 15/05/2012 chanthasone : 15/05/2012 butterney : 15/05/2012 True_net : 15/05/2012 bethezank : 15/05/2012 potae2424 : 15/05/2012 theoldza123 : 14/05/2012 nano  kigk : 14/05/2012 numtip : 14/05/2012 bonus82 : 13/05/2012 momay : 13/05/2012 ploy171499 : 13/05/2012 kai2104 : 12/05/2012