使用 php ci 连接一个access数据库

整理思路:

首先,理解清楚一个mdb文件就是一个数据库,php要连接access的数据库就需要有相关数据库驱动扩展,因此要开启pdo_odbc驱动。

其次,使用ci框架,可以利用其自带的数据库类,因此要配置config/database.php的基本配置(也可以不写死配置,可自己使用时动态传入配置),但因为已经使用wamp带的mysql数据库,此时就需要找到配置多数据库的方法。

然后,配置好之后可以尝试连接mdb文件,但出现问题。

最后,多方探索,锲而不舍,解决问题。

 

解决问题:

php扩展问题

我使用的wampserver环境,连接mdb需要开启pdo_odbc的扩展,因此在wampserver中直接找到并开启。(wamp会自动重启生效。);查看phpinfo可以找到pdo_odbc的扩展表示开启成功。

 

ci多数据库配置问题

ci框架的config/database.php配置中默认是default字段配置,你可以自定义一个名称copy一份配置,并修改其中的参数为要连接的mdb文件的配置。如下:

// 配置第二个数据库。操作access数据库 //access数据库(这个是用的odbc驱动)
 // $db['access']['dbdriver'] = "odbc";//odbc驱动 
$db['access']['dbdriver'] = "pdo";//pdo驱动
 // $db['access']['hostname'] = "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=D:/wamp64/www/ipms/server/files/123.mdb";//odbc驱动
 $db['access']['hostname'] = "odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=D:/wamp64/www/ipms/server/files/123.mdb";//pdo驱动, 
$db['access']['username'] = "admin";
 $db['access']['password'] = "123";
 $db['access']['dbprefix'] = ""; 
 $db['access']['pconnect'] = false;  
$db['access']['db_debug'] = TRUE; 
 $db['access']['cache_on'] = FALSE;  
$db['access']['cachedir'] = ""; 
 $db['access']['char_set'] = "utf8"; 
 $db['access']['dbcollat'] = "utf8_general_ci"; 
 $db['access']['swap_pre'] = ''; 
 $db['access']['autoinit'] = TRUE; 
 $db['access']['stricton'] = FALSE;

解释:只需要修改两个地方,就是hostname和dbdriver。按照网上大家贴出来的写即可。写完之后,就是踩坑埋坑之旅。

 

配置注意的点:

可以使用两套不同的驱动连接,pdo和odbc。

配置hostname的神坑:按照以上写是没问题的(一个空格都不能少,我配置时就踩了,Driver和括号之间空格,括号里的每一项要空格,逗号挨着前一项。)

dbq=后面是跟的你的数据库路径(全路径)。

配置出错就提示SQLSTATE[IM002] SQLDriverConnect: 0 [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序错误,因此你需要检查系统情况(直接复制这个错误提示去问度娘,在odbc数据源管理程序中新增数据源)

用户名和密码需要看你access数据库。

 

后续,连接并获取到数据之后,因为编码问题,json_encode的转码问题导致无法输出字符串到前端,任重道远...

 

总结:

1.wampserver 开启pdo_odbc扩展

2.ci框架配置多数据库访问

3.连接access数据库的配置写法,坑多,需仔细

4.odbc驱动程序管理器未发现数据源的问题

5.编码转码问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值