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 驱动方式连接的数据库,错误原因多半是你的连接字符串写错了,完整的连接字符串应
该是:
代码如下: