使用CI连接MS ACCESS数据库的方法
本帖最后由 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行:return @odbc_connect($this->hostname, $this->username, $this->password, SQL_CUR_USE_ODBC);
第79行:return @odbc_pconnect($this->hostname, $this->username, $this->password, SQL_CUR_USE_ODBC);
step2:配置database.php文件。位置:system\application\config\
代码如下:
$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! 补充一下:
在php环境中,尽量不使用com的方式连接MS的数据库,既:oledb方式。当然如果可以,也尽量不使用DSN数据源方式进行连接。虽然使用MS的数据库,主机肯定是MS的NT系列,但PHP仍然在APACHE下运行,而不是IIS。 按照楼主的方法试了,还是不行,请指点,我的配置如下
$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"; 我测试后的最终结果是::
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 这个方法,我测试了,一下,在2.0版本以上,就无法实现了。
我也测试了1.7.2的,这个版本可以。
页:
[1]