php 調用com組件讀取 mdb(access)文件數據


使用注意事項

PHP 5.4.5以前的版本,只需要在php.ini中把com.allow_dcom = true打開就可以了,

但是5.4.5版本以后,PHP把com/dotnet 模塊集成到了一個單獨的擴展中,

所以需要在php.ini中加一行擴展extension=php_com_dotnet.dll,是加一行,不是打開,默認配置文件中沒有這一行的,然后重啟IIS或Apache,再次運行就正常了!

com組件時windows 獨有的不能在linux上執行

1.檢查php目錄ext文件夾下面php_com_dotnet.dll是否存在

2.在php.ini里面加入以下語句:

[PHP_COM_DOTNET]
extension=php_com_dotnet.dll

3.php.ini中設置

​ 去掉前面的分號

com.allow_dcom = true

具體代碼實現

<?php
//創建一個Connection對象 
$conn = new COM("ADODB.Connection") or die("創建COM失敗");

//鏈接mdb 文件
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=". realpath("./db.mdb");
$conn->Open($connstr);

//創建一個Recordcount對象 
$rs = new COM("ADODB.RecordSet") or die("創建RS失敗");
/**
 * 參數1 : sql 字符串
 * 參數2 :連接對象
 * 參數3 : 打開方式
 *       0 只讀,   數據只能向下移動
 *       1 可讀寫,數據可以自由移動,多用戶下別人不能看到新增數據(除非重啟動)
 *       2 可讀寫,數據可以自由移動,多用戶下別人可以看到新增數據
 *       3 只讀 , 數據可以自由移動  
 * 參數4 : 鎖定類型
 *       1 默認值,   只讀
 *       2 悲觀鎖定
 *       3 樂觀鎖定
 *       4 批次樂觀鎖定
 */
$rs->Open("select * from SmartCard",$conn,1,1);
while(!$rs->eof) {
    //取字段名和值
   	//方式1
    echo $rs->Fields("ID")->name;
    echo " : ";
    echo $rs->Fields("ID")->value;
    echo "-----";
    
    //方式2
    echo $rs->Fields(0)->name;
    echo " : ";
    echo $rs->Fields(0)->value;
    echo "-----";
    
    //換行
    echo "<br>";
    $rs->MoveNext();
}
// 釋放資源
$rs->Close();
$conn->Close();
$rs = null;
$conn = null;
?>

如果結合文件上傳mdb文件,再讀取mdb文件,需要注意的地方

上傳文件大小的設置

打開php.ini,首先找到

	file_uploads = on ;是否允許通過HTTP上傳文件的開關。默認為ON即是開
	upload_tmp_dir ;文件上傳至服務器上存儲臨時文件的地方,如果沒指定就會用系統默認的臨時文件夾
	upload_max_filesize = 8m ;望文生意,即允許上傳文件大小的最大值。默認為2M
	post_max_size = 8m ;指通過表單POST給PHP的所能接收的最大值,包括表單里的所有值。默認為8M

一般地,設置好上述四個參數后,上傳<=8M的文件是不成問題,在網絡正常的情況下。
但如果要上傳>8M的大體積文件,只設置上述四項還一定能行的通。

進一步配置以下的參數

	max_execution_time = 600 ;每個PHP頁面運行的最大時間值(秒),默認30秒
	max_input_time = 600 ;每個PHP頁面接收數據所需的最大時間,默認60秒
	memory_limit = 8m ;每個PHP頁面所吃掉的最大內存,默認8M

把上述參數修改后,在網絡所允許的正常情況下,就可以上傳大體積文件了

	max_execution_time = 600
	max_input_time = 600
	memory_limit = 32m
	file_uploads = on
	upload_tmp_dir = /tmp
	upload_max_filesize = 32m
	post_max_size = 32m


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM