PHP连接Access数据库常见错误及解决方法_PHP教程

php中文网
发布: 2016-07-21 14:53:35
原创
1168人浏览过

php+access连接数据库常用的方式一般有两种

1.通过建立odbc驱动,再用php 的odbc_connect()函数连接

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.bkjia.com] 如:$connstr=DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".$db;
$connid=odbc_connect($connstr,"username","password",SQL_CUR_USE_ODBC);

2.用oledb方式连接,再调用 open方法打开
如:

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.bkjia.com] $conn=new com("ADODB.connection");
$connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=".$db;
$conn->Open($connstr);

但这二种方法怎么连接都出错,去网上找资料,有的说是没有赋予Everyone权限,有的说是access97 和access2000的驱动不一样(就是数据库是2000建的,读取用的驱动是97的.)造成的。

经过反复测试原来是数据库的路经造成的.以前在开发asp时习惯把数据库的地址写成相对路径,再用server.mappath()函数获取他的绝对路径.
在开发php时也延续了这个习惯,用realpath加数据库的相对路径来获取数据库的地址.比如:$db=realpath("../db.mdb");

立即学习PHP免费学习笔记(深入)”;

但asp 的include函数和php的include函数在处理包含文件的方式似乎不同,造成了php在不同目录下包含conn.php文件连接数据库出现"常见错误 不能打开注册表关键字",

或Uncaught exception 'com_exception' with message 'Source: Provider
Description: 验证失败。' 的错误.
现在把错误信息及解决方法整理一下贴给大家,希望别的朋友遇到这种情况不用像我这样郁闷.

php连接access 数据库常见问题
错误1:

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.bkjia.com] Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC Microsoft Access Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0xdd0 Thread 0xcb8 DBC 0x14bd024 Jet'。, SQL state S1000 in SQLConnect in E:wwwroot\phpwebconn.php on line 8

出现这种错误证明你使用的是odbc的access驱动,就是上面说的第一种连接数据库的方法$connstr=DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".$db;
并且你当前访问的文件和你的conn.php数据库连接文件不在同一目录下,包含conn.php时用的相对路径,比如 include("../conn.php"),由于php处理include函数里的文件和 asp的不同,

造成了数据库路径上的错误,

解决方法:
1,检查你数据库的路径,是不是用realpath()函数加相对路径来获取的, 

比如:$db=realpath("../db.mdb");

先见AI
先见AI

数据为基,先见未见

先见AI 95
查看详情 先见AI

如果是,请换种方法获取数据库地址,比如用:$_SERVER['DOCUMENT_ROOT']来获取你网站的根目,再加数据库的地址,

例:$db=$_SERVER['DOCUMENT_ROOT']."db.mdb";

2,检查权限,赋予他Everyone权限

3,换种连接方式,微软的odbc驱动存在一些不稳定的bug,有可能导致此类错误,据说微软本身已经放弃了对odbc数据源连接方式的支持,并建议用户使用oledb方式,应该将连接字串改为如下方式:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=".$db;

错误2:

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.bkjia.com] Fatal error: Uncaught exception 'com_exception' with message 'Source: Provider
Description: 验证失败。' in E:wwwroot\phpwebconn.php:7 Stack trace: #0 E:wwwroot\phpwebconn.php(7): com->Open('Provider=Micros...') #1 ...............

这种错误说明你用的是oledb的方式连接的数据库,并且也是数据库的路径造成的.
解决方法同上,用$_SERVER['DOCUMENT_ROOT']."db.mdb";方法获取数据库地址

错误3:

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.bkjia.com] Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序, SQL state IM002 in SQLConnect in E:wwwroot\phpwebconn.php on line 8

odbc 驱动方式连接的数据库,错误原因多半是你的连接字符串写错了,完整的连接字符串应该是:

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.bkjia.com] $db=$_SERVER['DOCUMENT_ROOT']."db.mdb";
$connstr="Driver={Microsoft Access Driver (*.mdb)};Dbq=$db;Uid=Admin;Pwd=pass";
$connid=odbc_connect($connstr,"admin","pass",SQL_CUR_USE_ODBC) or die("数据库打开失败!请联系管理员");

如果你的数据库没有密码以上Uid和Pwd可以省略

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.bkjia.com] $connstr="Driver={Microsoft Access Driver (*.mdb)};Dbq=$db";
$connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC) or die("数据库打开失败!请联系管理员");

错误4:

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.bkjia.com] Fatal error: Uncaught exception 'com_exception' with message 'Source: ADODB.Connection
Description: 未找到提供程序。该程序可能未正确安装。' in......................

oledb连接方式,错误原因同上,完整的连接字符串应该是:

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.bkjia.com] $db=$_SERVER['DOCUMENT_ROOT']."db.mdb";
$conn=new com("ADODB.connection");
$connstr="Provider=Microsoaft.Jet.OLEDB.4.0;Data Source=".$db;
$conn->Open($connstr);

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/364756.htmlTechArticlephp+access连接数据库常用的方式一般有两种 1.通过建立odbc驱动,再用php 的odbc_connect()函数连接 Copy to Clipboard 引用的内容: [www.veryhuo.com] 如:...
相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号