应天论坛

 找回密码
 参与我们

QQ登录

只需一步,快速开始

搜索
查看: 950|回复: 1

php连接Access数据库的三种方法

[复制链接]

276

主题

303

帖子

3197

积分

管理员

湘南小侠客

Rank: 9Rank: 9Rank: 9

积分
3197

优质服务勋章论坛元老

QQ
发表于 2017-7-2 18:12:21 | 显示全部楼层 |阅读模式
最近想把一个asp的网站改成php的,无奈空间不支持mysql数据库,只好用access数据库了,但以前都是用的php+mysql,php+access数据库编程还真没有做过.
感谢党,感谢cctv,感谢搜索引擎,这不找到一编不错的文章,特转过来和大家分享.


(1)创建系统数据源,用PHP提供的ODBC函数即可。

(2)同样可以使用PHP的ODBC函数,但不创建数据源。
开放数据库连接(Open DateBase Conection,ODBC)是Windows Open Server(开放服务)API(WOSA)产品之一。一个数据源是对数据库的一个命名连接。对于应用程序要连接的不同类型的数据库,都需要一个ODBC 驱动程序。ODBC API主要是为客户/服务器的RDBMS使用设计的,但是ODBC驱动程序也可以用于连接桌面数据库文件、工作表和平面文件。ODBC使用 Odbcinst.dll库来设置和清除数据源。Odbcad32.exe是一个用于建立ODBC数据源的独立的32位可执行应用程序,在控制面板中有其对应的图标Control Panel。

ODBC驱动管理程序为数据源打开ODBC驱动程序并将 SQL语句传送给驱动程序。在客户/服务器RDBMS处理完一个select查询后,ODBC驱动程序将值返回给应用程序。当执行一个insert、 update或delete语句时,驱动程序返回查询所影响的行数。

下面介绍PHP使用ODBC连接Access 数据库的方法。用$connstr="DRIVER= Microsoft Access Driver (*.mdb)来设置数据驱动,函数realpath()用来取得数据库的相对路径。利用该方法连接Access数据库主要应用到PHP的 odbc_connect()函数,该函数声明如下:

[mw_shl_code=php,true]resourse odbc_connect( string dsn, string user, string password [, int cursor_type])[/mw_shl_code]

dsn:系统dsn名称

user:数据库服务器某用户名。

password:数据库服务器某用户密码。

cursor_type:游标类型。


代码如下:
[mw_shl_code=php,true]$connstr="DRIVER=Microsoft Access Driver (*.mdb);
DBQ=".realpath("bookinfo.mdb");
$connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC );[/mw_shl_code]


(3)使用微软的ADODB数据库驱动。ActiveX Data Objects(ADO)是Microsoft开放数据库应用程序的数据库访问技术。它被设计用来同新的数据访问层OLE DB Provider一起协同工作,提供通用数据访问(Universal Date Access)。OLE DB是一个低层的数据访问接口,用它可以访问各种数据源,包括传统的关系型数据库、电子邮件系统及自定义的商业对象。ADO技术大大简化了OLE DB的操作,因为ADO封装了OLE DB程序中使用的大量COM接口,所以ADO是一种高层的访问技术。

ADO技术基于通用对象模型(COM),它提供了多种语言的访问技术。PHP是通过预先定义类COM来使用ADO方法操纵Access数据库的。该类详细说明如下:

[mw_shl_code=php,true]string com::com( string module_name [, string server_name [, int codepage]])[/mw_shl_code]

module_name:被请求组件的名字或class-id。

server_name:DCOM服务器的名字。

Codepage:指定用于将PHP字符串转换成UNICODE字符串的代码页,反之亦然。该参数的取值有CP_ACP、CP_MACCP、CP_OEMCP、CP_SYMBOL、CP_THREAD_ACP、CP_UTF7和CP_UTF8。
PHP利用com类并使用ADO方法访问数据库的代码如下:

[mw_shl_code=php,true]$conn = new com("ADODB.Connection");
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("bookinfo.mdb ");
$conn->Open($connstr);
[/mw_shl_code]
每次见你穿短裤打领带,还穿个拖鞋,下次再这样穿不要从我家门口过了!
http://gsh.yzqz.cn/CassettePlayer/index.html

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
回复

使用道具 举报

276

主题

303

帖子

3197

积分

管理员

湘南小侠客

Rank: 9Rank: 9Rank: 9

积分
3197

优质服务勋章论坛元老

QQ
 楼主| 发表于 2017-7-2 19:32:20 | 显示全部楼层
补充:

在PHP中连接Access有如下3种方式。

(1)创建系统数据源,用php提供的ODBC函数即可。

php常用ODBC函数集如下:
ODBC连接类函数
odbc_connect函数:打开一个ODBC连接
odbc_close函数:关闭一个已经打开的ODBC连接
odbc_close_all函数:关闭所有已经打开的ODBC连接
odbc_pconnect函数:打开一个持续有效的ODBC连接
ODBC操作类函数
odbc_commit函数:更新所有处于未决状态的操作
odbc_do函数:在打开的ODBC连接上执行SQL语句
odbc_exec函数:执行SQL语句
odbc_execute函数:执行一个预置的SQL语句
odbc_free_result函数:释放传回资料所占用的内存
odbc_prepare函数:预置SQL语句的执行
odbc_rollback函数:撤销所有处于未决状态的操作
ODBC信息获取类函数
odbc_columnprivileges函数:列出给定表的列和相关的权限
odbc_columns函数:列出指定表的列的名称
odbc_cursor函数:获取光标的名称
odbc_data_source函数:返回连接数据库的信息
odbc_error函数:获取最后的错误代码
odbc_errormsg函数:获取最后的错误信息
odbc_fetch_array函数:获取结果集数组
odbc_fetch_into函数:获取传回的指定列
odbc_fetch_object函数:返回结果集到对象
odbc_fetch_row函数:获取传回的一列
odbc_field_len函数:获取字段的长度
odbc_field_name函数:获取字段的名称
odbc_field_num函数:获取字段的序号
odbc_field_precision函数:获取字段的长度
odbc_field_scale函数:获取字段的浮点数
odbc_field_type函数:获取字段的资料类型
odbc_foreignkeys函数:返回特定表的外来键
odbc_gettypeinfo函数:返回数据库的类型信息
odbc_longreadlen函数:设定传回栏的最大值
odbc_num_fields函数:获取字段数目
odbc_num_rows函数:获取传回的列数目
odbc_primarykeys函数:返回列的名字作为表的主键
odbc_procedurecolumns函数:返回检索过程的参数信息
odbc_procedures函数:获取存在于特定数据源中的进程信息
odbc_result_all函数:传回HTML表格信息
odbc_result函数:获取结果数据
odbc_specialcolumns函数:返回一个表中在传送更新时可以自动更新的列
odbc_statistics函数:获取表的状态及其索引
odbc_tableprivileges函数:列出表格和每个表格关联的权限
odbc_tables函数:获取特定数据库上的表的名称
odbc_autocommit函数:开启或关闭自动更新
odbc_binmode函数:设定二进制的数据处理方式
odbc_next_result函数:检查下一个结果集是否可用
odbc_setoption函数:调整ODBC设定


(2)同样可以使用PHP的ODBC函数,但不创建数据源。

开放数据库连接(Open DateBase Conection,ODBC)是Windows Open Server(开放服务)API(WOSA)产品之一。一个数据源是对数据库的一个命名连接。对于应用程序要连接的不同类型的数据库,都需要一个ODBC 驱动程序。ODBC API主要是为客户/服务器的RDBMS使用设计的,但是ODBC驱动程序也可以用于连接桌面数据库文件、工作表和平面文件。ODBC使用 Odbcinst.dll库来设置和清除数据源。Odbcad32.exe是一个用于建立ODBC数据源的独立的32位可执行应用程序,在控制面板中有其对应的图标Control Panel。
ODBC驱动管理程序为数据源打开ODBC驱动程序并将 SQL语句传送给驱动程序。在客户/服务器RDBMS处理完一个select查询后,ODBC驱动程序将值返回给应用程序。当执行一个insert、 update或delete语句时,驱动程序返回查询所影响的行数。
下面介绍PHP使用ODBC连接Access 数据库的方法。用$connstr="DRIVER= Microsoft Access Driver (*.mdb)来设置数据驱动,函数realpath()用来取得数据库的相对路径。利用该方法连接Access数据库主要应用到PHP的 odbc_connect()函数,该函数声明如下:

[mw_shl_code=php,true]resourse odbc_connect( string dsn, string user, string password [, int cursor_type])[/mw_shl_code]
dsn:系统dsn名称
user:数据库服务器某用户名。
password:数据库服务器某用户密码。
cursor_type:游标类型。
代码如下:
[mw_shl_code=php,true]$connstr="DRIVER=Microsoft Access Driver (*.mdb);
DBQ=".realpath("bookinfo.mdb");
$connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC );[/mw_shl_code]

(3)使用微软的ADODB数据库驱动。ActiveX Data Objects(ADO)是Microsoft开放数据库应用程序的数据库访问技术。它被设计用来同新的数据访问层OLE DB Provider一起协同工作,提供通用数据访问(Universal Date Access)。OLE DB是一个低层的数据访问接口,用它可以访问各种数据源,包括传统的关系型数据库、电子邮件系统及自定义的商业对象。ADO技术大大简化了OLE DB的操作,因为ADO封装了OLE DB程序中使用的大量COM接口,所以ADO是一种高层的访问技术。
ADO技术基于通用对象模型(COM),它提供了多种语言的访问技术。PHP是通过预先定义类COM来使用ADO方法操纵Access数据库的。该类详细说明如下:

[mw_shl_code=php,true]string com::com( string module_name [, string server_name [, int codepage]])[/mw_shl_code]
module_name:被请求组件的名字或class-id。
server_name:DCOM服务器的名字。
Codepage:指定用于将PHP字符串转换成UNICODE字符串的代码页,反之亦然。该参数的取值有CP_ACP、CP_MACCP、CP_OEMCP、CP_SYMBOL、CP_THREAD_ACP、CP_UTF7和CP_UTF8。

PHP利用com类并使用ADO方法访问数据库的代码如下:

[mw_shl_code=php,true]<?PHP
/*
   创建ADO连接
*/
$conn = @new COM("ADODB.Connection") or die ("ADO Connection faild.");
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("DATUM/cnbt.mdb");
$conn->Open($connstr);
/*
创建记录集查询
*/
$rs = @new COM("ADODB.RecordSet");
$rs->Open("select * from dbo_dirs",$conn,1,3);
/*
   循环读取数据
*/
while(!$rs->eof){
echo "$rs->Fields["title"]->Value;
echo "<br/>";
$rs->Movenext();     //将记录集指针下移
}
$rs->close();  
?>
[/mw_shl_code]
每次见你穿短裤打领带,还穿个拖鞋,下次再这样穿不要从我家门口过了!
http://gsh.yzqz.cn/CassettePlayer/index.html

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 参与我们

本版积分规则

QQ|Archiver|手机版|小黑屋|应天社区 ( 湘ICP备17015224号 )

GMT+8, 2024-12-22 19:54 , Processed in 0.078125 second(s), 28 queries .

Powered by Discuz!

© 2001-2017 Comsenz Inc.


免责声明:
本站所发布的第三方软件及资源(包括但不仅限于文字/图片/音频/视频等仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢某程序或某个资源,请支持正版软件及版权方利益,注册或购买,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To: admin@yzqz.cn

快速回复 返回顶部 返回列表