1.首先你的机器上要装有ACCESS 2007,最好PHP已经升级到最新版2.本人的运行环境:Windows 7 Professional x64, PHP 5.3.0,Access 2007 SP1,鉴于目前集中学习PHP的相关东西,运行环境不包括Apache Web Server.数据库文件存放地址(这个没什么影响):E:\php.accdb和E:\php.mdb3.那好咱开始说.鄙人一共发现四种方法,现在跟大家分享.4.方法一:ODBC访问。不过目前来说,由于我的机器是64位的,当我想创建一个ODBC数据源的时候弹出了错误,建议大家去访问http://www.w3school.com.cn/php/php_db_odbc.asp,算是给出了比较详细的过程.不少网上的帖子都推荐到那里去看,我也推荐大家去.5.方法二:ODBC+COM。也是从网上搜索到的,放在这里作个汇总http://www.blueidea.com/tech/program/2005/3080.asp。这个方法是通过调用COM组件来实现的,我后来的方法是受此启发而产生的。这个方法本人测试过,是可行的。说下个人观点:这个方法虽然调用了COM组件,数据库连接仍然是ODBC层面的。你可以看一下他的代码中的几段:$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=". realpath("data/db.mdb")。所谓的Driver跟ODBC数据源中的驱动名称是一样的。这个方法仅仅是查询上使用了COM。6.方法三:Microsoft.Jet.OLEDB.4.0+COM。这个方法的话只支持Microsoft Jet数据库,也就是以MDB为后缀的数据库。下面我给出代码://BEGIN:<?PHP
/*
创建ADO连接
*/
$conn = @new COM("ADODB.Connection") or die ("ADO Connection faild.");
$connstr = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=".realpath("e:\\php.mdb");
$conn->Open($connstr);
/*
创建记录集查询
*/
$rs = @new COM("ADODB.RecordSet");
$rs->Open("select * from php",$conn);
/*
循环读取数据
*/
while(!$rs->eof){
echo $rs->Fields["place"]->Value;
echo "<br/>";
$rs->Movenext(); //将记录集指针下移
}
$rs->close();
?>//END:
7.方法四:Microsoft.ACE.OLEDB.12.0+COM。这个方法很通用,感觉上除了ACCESS之外,EXCEL好像也可以,有兴趣的人可以测试一下。下面我给出代码:
//BEGIN:<?PHP
/*
创建ADO连接
*/
$conn = @new COM("ADODB.Connection") or die ("ADO Connection faild.");
$connstr = "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=".realpath("e:\\php.accdb");
$conn->Open($connstr);
/*
创建记录集查询
*/
$rs = @new COM("ADODB.RecordSet");
$rs->Open("select * from php",$conn);
/*
循环读取数据
*/
while(!$rs->eof){
echo $rs->Fields["place"]->Value;
echo "<br/>";
$rs->Movenext(); //将记录集指针下移
}
$rs->close();
?>//END其实方法二三四大同小异,你可以看到我的代码几乎都是一样的。鄙人经过四天的资料查找,就PHP和ACCESS的连接问题,给出以下建议: 1.如果你要求你的代码有比较好的可移植性,建议你使用PDO数据库抽象层(这是这个帖子没有谈及的另一种方法)
2.追求速度者和要求使用2007格式的,建议你使用方法四。
3.就MDB格式而言,方法三和四的速度比较,我不敢下结论,希望有人能测试一下。//////////////////////////////////////////////////////////////////////////////////////////Unlock Experience!
/*
创建ADO连接
*/
$conn = @new COM("ADODB.Connection") or die ("ADO Connection faild.");
$connstr = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=".realpath("e:\\php.mdb");
$conn->Open($connstr);
/*
创建记录集查询
*/
$rs = @new COM("ADODB.RecordSet");
$rs->Open("select * from php",$conn);
/*
循环读取数据
*/
while(!$rs->eof){
echo $rs->Fields["place"]->Value;
echo "<br/>";
$rs->Movenext(); //将记录集指针下移
}
$rs->close();
?>//END:
7.方法四:Microsoft.ACE.OLEDB.12.0+COM。这个方法很通用,感觉上除了ACCESS之外,EXCEL好像也可以,有兴趣的人可以测试一下。下面我给出代码:
//BEGIN:<?PHP
/*
创建ADO连接
*/
$conn = @new COM("ADODB.Connection") or die ("ADO Connection faild.");
$connstr = "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=".realpath("e:\\php.accdb");
$conn->Open($connstr);
/*
创建记录集查询
*/
$rs = @new COM("ADODB.RecordSet");
$rs->Open("select * from php",$conn);
/*
循环读取数据
*/
while(!$rs->eof){
echo $rs->Fields["place"]->Value;
echo "<br/>";
$rs->Movenext(); //将记录集指针下移
}
$rs->close();
?>//END其实方法二三四大同小异,你可以看到我的代码几乎都是一样的。鄙人经过四天的资料查找,就PHP和ACCESS的连接问题,给出以下建议: 1.如果你要求你的代码有比较好的可移植性,建议你使用PDO数据库抽象层(这是这个帖子没有谈及的另一种方法)
2.追求速度者和要求使用2007格式的,建议你使用方法四。
3.就MDB格式而言,方法三和四的速度比较,我不敢下结论,希望有人能测试一下。//////////////////////////////////////////////////////////////////////////////////////////Unlock Experience!
解决方案 »
- 求助,php和javascript调用wowza,实现文本聊天功能
- 新人求教PHP环境搭建
- php项目 注册登录模块
- 救助.........................................在线等~~
- php SJIS转UTF-8 乱码问题
- UTF8编码时 莫名其妙的出现一个隐形字符
- 博客安装时显示Specified key was too long
- 打开包含iframe的文件时总要提示下载iframe包含的网页(在线等)?
- 在线紧急求助!
- php 有没有象global.asa的东西?
- 如何利用404.php错误页来进行伪静态,高手进来帮我一下
- PHP高级学习群,高手的请进,名额不多
1.装了Office 2010之后,OLE DB的方法四不再适用,正在研究2.关于COM组件中函数调用方法可以使用com_print_typeinfo()实现,另外如果你的机器上装有Visual Studio Professional,可以使用OLE-COM Object Viewer定位到ADODB.Connection,可以看到一系列关于数据库操作的接口.列举如下:ADODB.Connection,ADODB.Command,ADODB.Error,ADODB.Parameter,ADODB.Record,ADODB.Recordset,ADODB.Stream