php连接Access数据库错误及解决方法

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

推荐的代码

需要注意php获取路径用的是realpath


代码如下:

<?php
$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";
?>

之二:

代码如下:

<?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();
?>

下面是补充

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

如:


代码如下:

$connstr=DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".$db;
$connid=odbc_connect($connstr,"username","password",SQL_CUR_USE_ODBC);

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

代码如下:

$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");

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

或Uncaught exception 'com_exception' with message 'Source: ProviderDescription: 验证失败。' 的错误.

现在把错误信息及解决方法整理一下贴给大家,希望别的朋友遇到这种情况不用像我这样郁闷

错误1

php连接access 数据库常见问题

代码如下:

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

出现这种错误证明你使用的是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:

代码如下:

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

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

代码如下:

$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可以省略

代码如下:

$connstr="Driver={Microsoft Access Driver (*.mdb)};Dbq=$db";
$connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC) or die("数据库打开失败!请联系管理员");

错误4:
Fatal error: Uncaught exception 'com_exception' with message 'Source: ADODB.ConnectionDescription: 未找到提供程序。该程序可能未正确安装。' in......................

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

代码如下:

$db=$_SERVER['DOCUMENT_ROOT']."\db.mdb";
$conn=new com("ADODB.connection");
$connstr="Provider=Microsoaft.Jet.OLEDB.4.0;Data Source=".$db;     
$conn->Open($connstr);

(0)

相关推荐

  • php adodb连接带密码access数据库实例,测试成功

    <?     include('./class/adodb/adodb.inc.php');            //实例化db类,链接            $db = ADONewConnection('ado_access');                $access = realpath('./rs.mdb');                 $myDSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;'.'DATA SOURCE='. $access

  • PHP连接Access数据库的方法小结

    PHP代码: 需要注意php获取路径用的是realpath 复制代码 代码如下: <?php $connstr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("data.mdb"); $connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC); $issuetime=date("Y-m-d

  • PHP连接操作access数据库实例

    因为之前做的PingSwitch要做一个WEB展示的前端,因为一开始用了Delphi和access的结构,而Delphi与MySQL的连接又相对麻烦,最后只能选择用PHP+Access的组合,比较奇怪,但是也合理····· 在PHP中连接access数据库的话我们必须ADO来连接,这跟ASP中连接数据库非常的类似.下边给出了一段DEMO供大家参考. <?PHP /* 创建ADO连接 */ $conn = @new COM("ADODB.Connection") or die (&

  • PHP使用PDO连接ACCESS数据库

    1,参考W3CSHOOL http://www.w3cschool.cc/php/php-pdo.html 2,连接access 复制代码 代码如下: <?php $db = new PDO("odbc:driver={microsoft access driver (*.mdb)};               dbq=".realpath("data.mdb"))               or die("Connect Error"

  • PHP连接access数据库

    复制代码 代码如下: <?PHP /*    创建ADO连接 */ $conn = @new COM("ADODB.Connection") or die ("ADO Connection faild."); $connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("DATUM/cnbt.mdb"); $conn->Open($c

  • php将access数据库转换到mysql数据库的方法

    本文实例讲述了php将access数据库转换到mysql数据库的方法.分享给大家供大家参考.具体分析如下: 本人采集来的数据是ACCESS的,但我的程序是mysql的,故写了一个程序,程序三步走,分享一下,喜欢操作数据库的朋友应该都会用到的. 1.连接mysql,代码如下: 复制代码 代码如下: $dbhost="localhost:3307";//服务器  $db="dataname";//数据库  $dbuser="root";//用户名 

  • php实现连接access数据库并转txt写入的方法

    本文实例讲述了php实现连接access数据库并转txt写入的方法.分享给大家供大家参考,具体如下: 这里的代码实现PHP读取手机归属地 并导入txt文件的功能(文章末尾附手机归属地 数据库) mdbtotxt.php代码: <?php //php连接access测试 define('TABLE', 'shoujiguishudi'); define('OUTPUTFILE', 'output.txt'); define('ROOT',str_replace($_SERVER['PHP_SELF

  • 三种php连接access数据库方法

    一种是利用php的pdo,一种是odbc,com接口来与access数据库连接. 利用pdo与access数据库连接  复制代码 代码如下: $path ="f:fontwww.jb51.netspiderresult.mdb";  $conn = new pdo("sqlite:$path"); if( $conn ) {  echo ('connection pdo success'); } else {  echo ('cnnection pdo fail ,

  • 用ADODB来让PHP操作ACCESS数据库的方法

    这两天都在研究PHP, 主要是为了应付学习AJAX所需要的一些后台知识, 我对开源的东西总是有一种莫名的亲近感, 不要钱的东西果然人人爱啊  由于一般的空间MYSQL数据库都要单独花钱购买, 所以打算暂时先用ACCESS, 结果一查资料才头大, 原来PHP对每种不同的数据库的操作方法都不一样..... 于是搜了一些BLOG, 发现许多链接ACCESS的方法,但都不太尽如人意, 最后终于查到ADODB这个东东. 它是PHP的一个类, 内置了绝大部份你见过的数据库的操作方法. 比如PHP操作一个MY

  • 谈谈PHP连接Access数据库的注意事项

    首先需要注意: 安装access 数据库的时候 需要安装与本机系统相互匹配的office版本,win7 64位的系统 ,那么Office也要是64位的 最好装 office2010... 因为我就是经历了从 2003 -2007 -2010的痛苦,特别是在装2010的时候,因为装载过2003版本的office ,导致需要彻底清除干净2003版本的office. 所有劝各位能装2010 的就尽量装2010的吧,不过你要是不装的话,也随便你啦o(* ̄▽ ̄*)o  . 第一步 装 office 201

  • PHP中通过ADO调用Access数据库的方法测试不通过

    我看了那篇<怎样在PHP中通过ADO调用Asscess数据库和COM程序>文章后,马上作了测试,结果失败了.伤心是不是. 怎么办?我只好去PHP官方网站求助,皇天不负有心人,终于我找到了答案-- 具体的解决方法如下:  (1)下载相应的ZIP包:同MICROSOFT公司的ADO一样,该东东用PHP实现ADO同各种各样数据库打交道(太好了,所有类型的数据库都能处理).(2)解包,里面文件很多,不过有用的只有ohtml.inc.php和adodb.inc.php,(经我测试并不是这样)把它们复制到

  • php操作access数据库的方法详解

    本文实例讲述了php操作access数据库的方法.分享给大家供大家参考,具体如下: 在PHP网站开发中,PHP与Mysql是最好的组合,但是当你想将其他平台的网站移植到PHP平台时,必然遇到移植性的问题,如ASP+ACCESS平台如何移植?首当其冲便是PHP连接Access数据库问题,在不改变数据库的情况下,PHP如何与Access数据库建立连接? PHP提供多种连接数据库解决方案,在此详解如何使用PHP ADOdb.PDO.ODBC与Access数据库建立连接的代码实例,作为抛砖引玉. 准备工

随机推荐