-
COM trong PHP.
Có lẽ khi láºp trình, các bạn cÅ©ng đã là m quen vá»›i khái niệm vá»? COM (component object model), đối vá»›i các bạn láºp trình trên môi trÆ°á»?ng windows thì việc truy xuất COM khá Ä‘Æ¡n giản, bởi các ngôn ngữ phát triển trên win há»— trợ COM rất nhiá»?u, đặc biệt là các ngôn ngữ do Microsoft phát triển. Còn trong PHP, việc sá» dụng COM đôi khi rất là hạn chế, các phiên bản trÆ°á»›c tôi chÆ°a sá» dụng nên không biết, còn hiện tại tôi Ä‘ang sá» dụng phiên bản 4.3.3 của PHP, và vá»›i các phiên bản dà nh cho windows thì COM đã được há»— trợ. Ä?ể có thể sá» dụng được COM trong PHP, các bạn phải đặt dòng lệnh :
com.allow_dcom=TRUE
trong file php.ini. Thông qua các hà m nà y, các bạn có thể truy xuất bất cứ má»™t đối tượng nà o của ứng dụng windows. Trong và dụ nà y, ta sẽ truy cáºp csdl Access thông qua đối tượng ADODB.
Tạo má»™t csdl .mdb có tên ComDemo, và má»™t bảng tblCom, trong đó có hai trÆ°á»?ng: Site và SiteDesc. Ä?ể khởi tạo má»™t đối tượng COM, sá» dụng cú pháp:
<?
$obj = new COM("server.object")
?>
//Bước 1: tạo chuỗi kết nối
//------------------------------------------
<?
$connstr="Provider=Microsoft.jet.oledb.3.51;" . "Persist Security info=false;" . "data source=" . "comdemo.mdb" . ";";
?>
//Bước 2: Tạo đối tượng kết nối và mở nó ra
//------------------------------------------------------------
<?
$adoconn=new COM("adodb.connection") or die("can not start Active X Data Objects");
$adoconn->Open($connstr);
?>
//Bước 3: Thực hiện truy vấn SQL
//-----------------------------------------------
<?
$recordset = $adoconn->Execute("select * from tbcom");
?>
//Bước 4: Lấy tổng số trư�ng trong bảng và đưa và o mảng
//---------------------------------------------------------------------------
<?
$total_f=$recordset->fields->count();
echo "\n" . "Total No of fields : " . $total_f;
//Lặp qua và lấy tên của các trư�ng
$fld=array();
for ($i=0; $i < $total_f; $i++)
{
$fld[$i] = $recordset->Fields($i);
}
echo "<br>";
?>
//Bước 5: Lặp qua recordset để lấy các giá trị của các trư�ng
//--------------------------------------------------------------------------
<?
$rowcnt = 0;
while (!$recordset->EOF)
{
for ($i=0; $i < $total_f; $i++)
{
echo $fld[$i]->value . " | ";
}
echo "<br>";
$rowcnt++;
$recordset->MoveNext();
?>
//Bước 6: Huỷ b� các đối tượng
//---------------------------------------------
<?
$recordset->Close();
$adoconn->Close();
$recordset->Release();
$adoconn->Release();
$recordset = null;
$adoconn = null;
?>
Hy vá»?ng các bạn thÃch các cÆ¡ sở dữ liệu trên môi trÆ°á»?ng win sẽ sá» dụng tốt các đối tượng nà y. Còn tôi, vẫn chỉ là mysql mà thôi :)