· کتابخانه ای برای دسترسی به انواع از پایگاه داده.
· PHP ADOdb با PHP نوشته شده است.
· از سیستم متاتایپ (metatype system) برای یافتن نوع داده(data type) معادل یک فیلد در پایگاه داده استفاده می کند.
· ایده ان از Microsoft ADOdb گرفته شده است.
· از انواع پایگاه داده مانند MySQL، Oracle، Microsoft SQL Server، Sybase، Sybase SQL Anywhere، Informix، PostgreSQL، FrontBase، Interbase ، Foxpro، Access، ADO و ODBCپشتیبانی می کند.
· همچنین این کتابخانه نه تنها از دستورات select و Delete که از Insert نیز پشتیبانی می کند.
· PHP ADOdb از نوع Write once run anywhere است. (یکبار بنویسید همه جا استفاده کنید).
· کد sql ان انتقال پذیر(portable) است .
می توانید مشتریتان را با گفتن "مشکلی نیست می توانید از mysql، mssql، oracle و غیره استفاده کنید"، شگفت زده کنید. برنامه ما بدون نیاز به تغییر کد، تمام پایگاه های داده اصلی را پشتیبانی می کند. حتما ارتقاء می گیرید. ابزار جادویی ما php ADOdb است. توابع PHP برای دسترسی به پایگاه داده استاندارد نشده است. این نیاز به یک Class Library پایگاه داده را برای پنهان کردن اختلافات بین API پایگاه داده، بیشتر می کند، با این Class Library می توانیم به راحتی پایگاه داده را تعویض کنیم. در حال حاضر ADOdb ازMySQL، Oracle، Microsoft SQL Server، Sybase، Sybase SQL Anywhere، Informix، PostgreSQL، FrontBase، Interbase،Foxpro، Access، ADO and ODBC پشتیبانی می کند. گزارش هایی مبنی بر اتصال موفق به Progress و DB2 هم از طریق ODBCداشته ایم. ویژگی های یکتای ADOdb عبارتند از:
· برای کاربران ویندوز کار با ان راحت است. چون بسیاری از قرارداد ها شبیه Microsoft ADO است. بر خلاف دیگر کلاس های پایگاه داده PHP که بر دستور Select تمرکز دارند، ما کدی را ارائه می کنیم که insert و delete را هم انجام داده و قابل انتقال به دیگر پایگاه های داده باشد. برای هر پایگاه داده، متدهایی برای پردازش تاریخ (date)، الحاق رشته ها ارائه شده است.
· یک سیستم متاتایپ به طور توکار نوشته شده که می توانیم معادل های نوع داده هایی مانند CHAR، STRING و TEXT را برای انواع پایگاه داده ها بیابیم.
· انتقال ان راحت است، چون تمام کد وابسته به پایگاه داده در توابع stub نگهداری می شود. لازم نیست منطق هسته ی(Core logic) کلاس ها را منتقل کنید.
· پشتیبانی از PHP Session.
حالا این کتابخانه را تست می کنیم.
1. از sourceforge انرا دانلود کنید.
2. فایل فشرده شده را در یک دایرکتوری وب استخراج کنید.
3. مدیر پایگاه داده را باز کنید (مثلا phpmyadmin).
4. یک پایگاه داده بسازید (مثلا inventory)
5. یک جدول ساده بسازید (مثلا products)
6. حالا یک تست ساده. کد زیر رابنویسید. انرا درون دایرکتوری با پوشه adodb بگذارید نام انرا adodbtest.php بگذارید:
01 |
<?php |
|
02 |
include('adodb/adodb.inc.php'); |
03 |
|
|
04 |
$databasetype = 'mysql'; |
05 |
$server = 'localhost'; |
|
06 |
$user = 'root'; |
07 |
$password = 'r0ot'; |
|
08 |
$database = 'inventory'; |
09 |
|
|
10 |
$db = ADONewConnection($databasetype); |
11 |
$db->debug = true; |
|
12 |
$db->Connect($server، $user، $password، $database); |
13 |
$rs = $db->Execute('select * from products'); |
|
14 |
print "<pre>"; |
15 |
print_r($rs->GetRows()); |
|
16 |
print "</pre>"; |
17 |
?> |
7. فایل را اجرا کنید
در این بخش، درباره اتصال ها (connection) در php ADOdb صحبت خواهیم کرد. دو اتصال در ADOdb وجود دارد:Connect() وPconnect().
Connect($host,[$user],[$password],[$database]) - از این در مثال اولمان استفاده کردیم. اتصال ناماندگار (non-persistent) به پایگاه داده یا سرور به نام $host، با استفاده از نام کاربری $user و پسورد $password. اگر سرور از چند پایگاه داده پشتیبانی کند، به $database متصل می شویم.
کد مانند این است:
1 |
$db = ADONewConnection($databasetype); |
|
2 |
$db->debug = true; |
3 |
$db->Connect($server, $user, $password, $database); |
اگر به جای OLEDB از Microsoft ADO استفاده می کنید می توانید، پارامتر $database را برابر ارائه دهنده داده OLEDB (OLEDB data provider) که استفاده می کنید قرار دهید.
PConnect($host,[$user],[$password],[$database]) - اتصال ماندگار (persistent) به پایگاه داده با استفاده از نام کاربری$user و پسورد $password. . اگر سرور از چند پایگاه داده پشتیبانی کند، به $database متصل می شویم.
1 |
include('adodb.inc.php'); # load code common to ADOdb |
|
2 |
$conn = &ADONewConnection('access'); # create a connection |
3 |
$conn->PConnect('northwind'); # connect to MS-Access, northwind DSN |
اگر connect و pconnect را با هم اشتباه می کنید، نکات زیر ممکن است مفید باشد:
اول، هنگام اتصال، تابع سعی می کند، لینکی ماندگار و باز به همان هاست، نام کاربری و پسورد بیابد. اگر یافت شود، در عوض ساخت اتصال جدید، شناسه(id) ان اتصال باز برگردانده می شود.
دوم، بعد از اتمام اسکریپت، اتصال به سرور SQL بسته نمی شود. در عوض، لینک برای استفاده اینده باز گذاشته می شود (مثلاmysql_close() لینکهایی که با pconnect() باز شده را نمی بندد.)
ADOdb ویژگی هایی دارد که سرعت شما را افزایش می دهد. یکی از این ویژگی ها دستور پیشرفته select است. با استفاده از این می توانید کد های خود را بهبود دهید.
مثال select ساده:
01 |
include('adodb.inc.php'); # load code common to ADOdb |
|
02 |
$conn = &ADONewConnection('access'); # create a connection |
03 |
$conn->PConnect('northwind'); # connect to MS-Access, northwind DSN |
|
04 |
|
05 |
$recordSet = &$conn->Execute('select * from products'); |
|
06 |
|
07 |
if (!$recordSet) |
|
08 |
print $conn->ErrorMsg(); |
09 |
else |
|
10 |
while (!$recordSet->EOF) { |
11 |
print $recordSet->fields[0].' '.$recordSet->fields[1].'<br>'; |
|
12 |
$recordSet->MoveNext(); |
13 |
} $recordSet->Close(); # optional |
|
14 |
$conn->Close(); # optional |
فرمول ان اینگونه است:
SelectLimit($sql,$numrows=-1,$offset=-1,$inputarr=false) |
اگر موفق باشد یک Recordset را برمی گرداند.یک select ساده را اجرا می کند، با شبیه سازی دستور Select در PostgreSQL ، تعداد را به $numrows با شروع از $offset محدود می کند.
مثال:
01 |
$connection->SelectLimit('SELECT * FROM TABLE',-1,10) |
نمایش تمام جدول ها با استفاده از ADOdb ساده است. فقط به MetaTables() نیاز دارید. مثال را ببینید: