用户
 找回密码
 入住 CI 中国社区
搜索
查看: 6518|回复: 4
收起左侧

使用CI连接MS ACCESS数据库的方法

[复制链接]
发表于 2009-11-26 16:25:30 | 显示全部楼层 |阅读模式
本帖最后由 spt119 于 2009-11-26 16:29 编辑

因项目需要,必须使用ACCESS数据库(不要问我why,这个问题我也很上火)。在1.7.2版本CI基础上,调了半天,终于成功连接MS ACCESS数据库。现将代码部分公布如下,希望能对有需要的朋友有所帮助。
step1:更改odbc_driver.php文件。位置:system\database\drivers\odbc\
更改内容:
分别在第66行及79行加入odbc类型代码,SQL_CUR_USE_ODBC,最后为:
第66行:
PHP复制代码
return @odbc_connect($this->hostname, $this->username, $this->password, SQL_CUR_USE_ODBC);
复制代码

第79行:
PHP复制代码
return @odbc_pconnect($this->hostname, $this->username, $this->password, SQL_CUR_USE_ODBC);
复制代码

step2:配置database.php文件。位置:system\application\config\
代码如下:
PHP复制代码
 
$active_group = "default";
$active_record = TRUE;
 
$db['default']['hostname'] = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".realpath("yjyx.php");
$db['default']['username'] = "";
$db['default']['password'] = "";
$db['default']['database'] = realpath("yjyx.php");
$db['default']['dbdriver'] = "odbc";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
复制代码


说明:为保险起见,MS ACCESS数据库后缀名*.mdb被修改成“*.php”。
数据库文件必须与system文件夹在同级目录。
enjoy it!

评分

参与人数 1威望 +5 收起 理由
Hex + 5 原创内容

查看全部评分

 楼主| 发表于 2009-11-26 16:32:27 | 显示全部楼层
补充一下:
在php环境中,尽量不使用com的方式连接MS的数据库,既:oledb方式。当然如果可以,也尽量不使用DSN数据源方式进行连接。虽然使用MS的数据库,主机肯定是MS的NT系列,但PHP仍然在APACHE下运行,而不是IIS。
发表于 2010-4-29 09:09:55 | 显示全部楼层
按照楼主的方法试了,还是不行,请指点,我的配置如下
$active_group = "default";
$active_record = TRUE;

$db['default']['hostname'] = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=".realpath("fbdb.mdb");
$db['default']['username'] = "";
$db['default']['password'] = "";
$db['default']['database'] = realpath("fbdb.mdb");
$db['default']['dbdriver'] = "odbc";
$db['default']['dbprefix'] = "abc_";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
发表于 2016-11-28 10:58:28 | 显示全部楼层
我测试后的最终结果是::
A Database Error Occurred

Unable to connect to your database server using the provided settings.

Filename: E:\phpweb\citest\system\database\DB_driver.php

Line Number: 125
发表于 2016-12-6 09:23:03 | 显示全部楼层
这个方法,我测试了,一下,在2.0版本以上,就无法实现了。
我也测试了1.7.2的,这个版本可以。

本版积分规则