收藏本页 | 网站地图 | 投稿指南
 
 
当前位置:首页 >> 学院首页 >> 程序开发 >> PHP >>

PHP连接ACCESS数据库

放大字体  缩小字体  At: 2006-10-26 18:09  By: master8 转载 来源: 互联网
  • <?PHP
    //创建ADO连接
    $conn = @new COM("ADODB.Connection") or die ("ADO连接失败!");
    $connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("temp/TempData.mdb");
    $conn->Open($connstr);
    //创建记录集查询
    $rs = @new COM("ADODB.RecordSet");
    $rs->Open("select * from blog_Content",$conn,1,3);
    echo $rs->Fields["log_Title"]->Value; //输出log_Title字段
    echo "<br/>";
    $rs->Movenext(); //将记录集指针下移
    echo $rs->Fields["log_Title"]->Value;
    $rs->close();
    ?>

    这只是个简单的方法,同样我们还可以Microsoft.Jet.OLEDB.4.0的方法连接,速度会更快一些。
    注:conn = @new COM("ADODB.Connection") or die ("ADO连接失败!");
    需要注意一下,这里 COM 必须使用大写,之前使用小写 Windows XP 居然出现非法操作,另这里使用了一个@符号,他的作用主要是容错!

    ==================================================================
    PHP中通过ADO调用Access数据库
    我看了那篇《怎样在PHP中通过ADO调用Asscess数据库和COM程序》文章后,马上作了测试,结果失败了。伤心是不是。

    怎么办?我只好去PHP官方网站求助,皇天不负有心人,终于我找到了答案――

    具体的解决方法如下:
    (1)进入http://php.weblogs.com/adodb,下载相应的ZIP包;同MICROSOFT公司的ADO一样,该东东用PHP实现ADO同各种各样数据库打交道(太好了,所有类型的数据库都能处理)。

    (2)解包,里面文件很多,不过有用的只有ohtml.inc.php和adodb.inc.php,把它们复制到相应目录下(或是安装php4的缺省目录下c:php4peer,或是当前运行程序目录下,视include()函数而定);

    (3)然后在本鸡(错误字一个,是机)的c:myphp目录下(iis下设置通过http://localhost/jhk来访问),造了一个名为test.mdb的access库,里头再造个experts的表……。为了通过DSN来访问,我把刚才的ACCESS库在DSN中取名test。

    (4)运行。看着说明书我造了这么个程序:
    dbtest.php,内容如下:

    <?php
    include('tohtml.inc.php'); // load code common to ADODB
    include('adodb.inc.php'); // load code common to ADODB
    $conn = &ADONewConnection('access'); // create a connection
    $conn->PConnect('test');// connect to MySQL, agora db
    $sql = 'select name, group1 from experts';
    $rs = $conn->Execute($sql);
    rs2html($rs,'border=2 cellpadding=3',array('Customer Name','Customer ID'));
    $rs->Close(); // optional
    $conn->Close(); // optional
    ?>

    然后,IE中打入:http://localhost/jhk/dbtest.php
    唉!结果出来了。 令人基本满意!!

    (5) 接着,我又想:还要设置DSN,烦不烦!绕过DSN应如何解决?因为在asp中,我习惯用conn.open("provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("../nydatabase.mdb"))来处理mdb库,那速度快呀!

    ?……想了又想,看了又看……。

    找找找,……,嘿嘿,终于在testdatabases.inc.php 中找到了答案! 我再把刚才的程序改编:

    <?php
    include('tohtml.inc.php'); // load code common to ADODB
    include('adodb.inc.php'); // load code common to ADODB
    $db = &ADONewConnection("ado_access");
    print "<h1>Connecting $db->databaseType...</h1>";
    $access = 'test.mdb';
    $myDSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;'.'DATA SOURCE='. $access . ';';.'USER ID=;PASSWORD=;';

    if (@$db->PConnect($myDSN, "", "", "")) {
    print "ADO version=".$db->_connectionID->version."
    ";
    $sql = 'select name, group1 from experts';
    $rs = $db->Execute($sql);
    rs2html($rs,'border=2 cellpadding=3',array('Customer Name','Customer ID'));
    } else print "ERROR: Access test requires a Access database $access".'
    '.$db->ErrorMsg();
    ?>
  •  






             









     
    Google
    论坛精华  
     
     
      ©2005-2008 站长吧 Master8.NET All Rights Reserved 陕ICP备05010609号