PHP连接Access数据库常见错误及解决方法
php+access连接数据库常用的方式一般有两种 1.通过建立odbc驱动,再用php 的odbc_connect()函数连接 Copy to Clipboard 如:$connstr=DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".$db; $connid=odbc_connect($connstr,"username","password",SQL_CUR_USE_ODBC); 2.用oledb方式连接,再调用 open方法打开 Copy to Clipboard $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()函数获取他的绝对路径. 但asp 的include函数和php的include函数在处理包含文件的方式似乎不同,造成了php在不同目录下包含conn.php文件连接数据库出现"常见错误 不能打开注册表关键字", 或Uncaught exception 'com_exception' with message '<b>Source:</b> Provider<br/><b>Description:</b> 验证失败。' 的错误. php连接access 数据库常见问题 Copy to Clipboard 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:wwwrootphpwebconn.php on line 8 出现这种错误证明你使用的是odbc的access驱动,就是上面说的第一种连接数据库的方法$connstr=DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".$db; 造成了数据库路径上的错误, 解决方法: 比如:$db=realpath("../db.mdb"); 如果是,请换种方法获取数据库地址,比如用:$_SERVER['DOCUMENT_ROOT']来获取你网站的根目,再加数据库的地址, 例:$db=$_SERVER['DOCUMENT_ROOT']."db.mdb"; 2,检查权限,赋予他Everyone权限 3,换种连接方式,微软的odbc驱动存在一些不稳定的bug,有可能导致此类错误,据说微软本身已经放弃了对odbc数据源连接方式的支持,并建议用户使用oledb方式,应该将连接字串改为如下方式: 错误2: Copy to Clipboard Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Provider<br/><b>Description:</b> 验证失败。' in E:wwwrootphpwebconn.php:7 Stack trace: #0 E:wwwrootphpwebconn.php(7): com->Open('Provider=Micros...') #1 ............... 这种错误说明你用的是oledb的方式连接的数据库,并且也是数据库的路径造成的. 错误3: Copy to Clipboard Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序,SQL state IM002 in SQLConnect in E:wwwrootphpwebconn.php on line 8 odbc 驱动方式连接的数据库,错误原因多半是你的连接字符串写错了,完整的连接字符串应该是: Copy to Clipboard $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 Clipboard $connstr="Driver={Microsoft Access Driver (*.mdb)};Dbq=$db"; $connid=odbc_connect($connstr,"",SQL_CUR_USE_ODBC) or die("数据库打开失败!请联系管理员"); 错误4: Copy to Clipboard Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> ADODB.Connection<br/><b>Description:</b> 未找到提供程序。该程序可能未正确安装。' in...................... oledb连接方式,错误原因同上,完整的连接字符串应该是: Copy to Clipboard $db=$_SERVER['DOCUMENT_ROOT']."db.mdb"; $conn=new com("ADODB.connection"); $connstr="Provider=Microsoaft.Jet.OLEDB.4.0;Data Source=".$db; $conn->Open($connstr); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |