anhsam
08-26-2005, 08:40 PM
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 :)
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 :)