解决php连接Access数据库错误的问题
感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!
php+access连
这篇文章主要为大家详细介绍了解决php连接Access数据库错误的问题,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!
php+access连接数据库常用的方式一般有两种.推荐的代码需要注意php获取路径用的是realpath
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <code> <?php /* php教程 www.512Pic.com */ $connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath ( "data.mdb" ); $connid =odbc_connect( $connstr , "" , "" ,SQL_CUR_USE_ODBC); $issuetime = date ( "Y-m-d H:i:s" ); $sql = "insert into test values(" "," ",...)" ; $result =odbc_exec( $connid , $sql ); if ( $result ) echo "successful" ; else echo "failed" ; ?> </code> |
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <code> <?PHP //创建ADO连接 $conn = @ new COM( "ADODB.Connection" ) or die ( "ADO连接失败!" ); $connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath ( "temp/TempData.mdb" ); $conn ->Open( $connstr ); //创建记录集查询 $rs = @ new COM( "ADODB.RecordSet" ); $rs ->Open( "select * from blog_Content" , $conn ,1,3); echo $rs ->Fields[ "log_Title" ]->Value; //输出log_Title字段 echo "<br/>" ; $rs ->Movenext(); //将记录集指针下移 echo $rs ->Fields[ "log_Title" ]->Value; $rs ->close(); ?> </code> |
1.通过建立odbc驱动,再用php 的odbc_connect()函数连接.
如:
代码如下:
1 2 3 | <code> $connstr =DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=". $db ; $connid =odbc_connect( $connstr , "username" , "password" ,SQL_CUR_USE_ODBC); </code> |
2.用oledb方式连接,再调用 open方法打开如:
代码如下:
1 2 3 4 | <code> $conn = new com( "ADODB.connection" ); $connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" . $db ; $conn ->Open( $connstr ); </code> |
但这二种方法怎么连接都出错,去网上找资料,有的说是没有赋予Everyone权限,有的说是access97 和access2000的驱动不一样(就是数据库是2000建的,读取用的驱动是97的.)造成的.
经过反复测试原来是数据库的路经造成的.以前在开发asp时习惯把数据库的地址写成相对路径,再用server.mappath()函数获取他的绝对路径.
在开发php时也延续了这个习惯,用realpath加数据库的相对路径来获取数据库的地址.比如:$db=realpath("../db.mdb");
但asp 的include函数和php的include函数在处理包含文件的方式似乎不同,造成了php在不同目录下包含conn.php文件连接数据库出现"常见错误 不能打开注册表关键字",
或Uncaught exception 'com_exception' with message 'Source: ProviderDescription: 验证失败。' 的错误.
现在把错误信息及解决方法整理一下贴给大家,希望别的朋友遇到这种情况不用像我这样郁闷
错误1
php连接access 数据库常见问题
代码如下:
1 2 3 4 | <code>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\phperz.com\phpweb\conn.php on line 8 </code> |
出现这种错误证明你使用的是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");如果是,请换种方法获取数据库地址,比如用:$_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:
Fatal error: Uncaught exception 'com_exception' with message 'Source: ProviderDescription: 验证失败。' in E:\wwwroot\phperz.com\phpweb\conn.php:7 Stack trace: #0 E:\wwwroot\phperz.com\phpweb\conn.php(7): com->Open('Provider=Micros...') #1 ...............
这种错误说明你用的是oledb的方式连接的数据库,并且也是数据库的路径造成的.
解决方法同上,用$_SERVER['DOCUMENT_ROOT']."\db.mdb";方法获取数据库地址
错误3:
代码如下:
1 2 3 4 | <code>Warning: odbc_connect() [ function .odbc-connect ]: SQL error: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序, SQL state IM002 in SQLConnect in E:\wwwroot\phperz.com\phpweb\conn.php on line 8 </code> |
odbc 驱动方式连接的数据库,错误原因多半是你的连接字符串写错了,完整的连接字符串应该是:
代码如下:
1 2 3 4 | <code> $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 ( "数据库打开失败!请联系管理员" ); </code> |
如果你的数据库没有密码以上Uid和Pwd可以省略
代码如下:
1 2 3 | <code> $connstr = "Driver={Microsoft Access Driver (*.mdb)};Dbq=$db" ; $connid =odbc_connect( $connstr , "" , "" ,SQL_CUR_USE_ODBC) or die ( "数据库打开失败!请联系管理员" ); </code> |
错误4:Fatal error: Uncaught exception 'com_exception' with message 'Source: ADODB.ConnectionDescription: 未找到提供程序。该程序可能未正确安装。' in......................oledb连接方式,错误原因同上,完整的连接字符串应该是:
代码如下:
1 2 3 4 5 | <code> $db = $_SERVER [ 'DOCUMENT_ROOT' ]. "\db.mdb" ; $conn = new com( "ADODB.connection" ); $connstr = "Provider=Microsoaft.Jet.OLEDB.4.0;Data Source=" . $db ; $conn ->Open( $connstr ); </code> |
注:关于解决php连接Access数据库错误的问题的内容就先介绍到这里,更多相关文章的可以留意