zoukankan      html  css  js  c++  java
  • 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
    

  • 相关阅读:
    antd按需加载
    解决vscode开发react项目没有代码提示问题
    在react中配置less
    flutter之fluro导航传参数
    Flutter游戏:简单规则与结束页
    zsh: command not found:XXX
    React的安装与使用
    git stash 用法总结和注意点
    【OSS】工具类
    ajax将数组或list集合传到后台 的 【坑】
  • 原文地址:https://www.cnblogs.com/makalochen/p/12191884.html
Copyright © 2011-2022 走看看