时间:2021-07-01 10:21:17 帮助过:9人阅读
- <br><!--?php <BR-->$connstr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("data.mdb"); <br>$connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC); <br>$issuetime=date("Y-m-d H:i:s"); <br>$sql="insert into test values("","",...)"; <br>$result=odbc_exec($connid,$sql); <br>if($result) echo "successful"; <br>else echo "failed"; <br>?> <br> <br><br>之二: <br><br><span><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br><!--?PHP <BR-->//创建ADO连接 <br>$conn = @new COM("ADODB.Connection") or die ("ADO连接失败!"); <br>$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("temp/TempData.mdb"); <br>$conn->Open($connstr); <br><br>//创建记录集查询 <br>$rs = @new COM("ADODB.RecordSet"); <br>$rs->Open("select * from blog_Content",$conn,1,3); <br>echo $rs->Fields["log_Title"]->Value; //</li></ol></pre>输出log_Title字段 <br>echo "<br>"; <br>$rs->Movenext(); //将记录集指针下移 <br>echo $rs->Fields["log_Title"]->Value; <br>$rs->close(); <br>?> <br><br><br>下面是补充<p></p>
- <p>1.通过建立odbc驱动,再用php 的odbc_connect()函数连接.</p>
- <p>如:<br><span><u></u></span> 代码如下:<br>$connstr=DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".$db;<br>$connid=odbc_connect($connstr,"username","password",SQL_CUR_USE_ODBC);<br></p>
- <p>2.用oledb方式连接,再调用 open方法打开<br>如: </p>
- <p><span><u></u></span> 代码如下:<br>$conn=new com("ADODB.connection");<br>$connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=".$db; <br>$conn->Open($connstr);<br></p>
- <p>但这二种方法怎么连接都出错,去网上找资料,有的说是没有赋予Everyone权限,有的说是access97 和access2000的驱动不一样(就是数据库是2000建的,读取用的驱动是97的.)造成的.</p>
- <p>经过反复测试原来是数据库的路经造成的.以前在开发asp时习惯把数据库的地址写成相对路径,再用server.mappath()函数获取他的绝对路径.</p>
- <p>在开发php时也延续了这个习惯,用realpath加数据库的相对路径来获取数据库的地址.比如:$db=realpath("../db.mdb");</p>
- <p>但asp 的include函数和php的include函数在处理包含文件的方式似乎不同,造成了php在不同目录下包含conn.php文件连接数据库出现"常见错误 不能打开注册表关键字",</p>
- <p>或Uncaught exception 'com_exception' with message 'Source: ProviderDescription: 验证失败。' 的错误.</p>
- <p>现在把错误信息及解决方法整理一下贴给大家,希望别的朋友遇到这种情况不用像我这样郁闷</p>
- <p>错误1</p>
- <p>php连接access 数据库常见问题</p>
- <p><span><u></u></span> 代码如下:<br>Warning: odbc_connect() [<br>function.odbc-connect<br>]: 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<br></p>
- <p>出现这种错误证明你使用的是odbc的access驱动,就是上面说的第一种连接数据库的方法$connstr=DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".$db;</p>
- <p>并且你当前访问的文件和你的conn.php数据库连接文件不在同一目录下,包含conn.php时用的相对路径,比如 include("../conn.php"),由于php处理include函数里的文件和 asp的不同,</p>
- <p>造成了数据库路径上的错误,</p>
- <p>解决方法:</p>
- <p>1,检查你数据库的路径,是不是用realpath()函数加相对路径来获取的,</p>
- <p>比如:$db=realpath("../db.mdb");<br>如果是,请换种方法获取数据库地址,比如用:$_SERVER['DOCUMENT_ROOT']来获取你网站的根目,再加数据库的地址</p>
- <p>例:$db=$_SERVER['DOCUMENT_ROOT']."\db.mdb";<br><br>2,检查权限,赋予他Everyone权限</p>
- <p>3,换种连接方式,微软的odbc驱动存在一些不稳定的bug,有可能导致此类错误,据说微软本身已经放弃了对odbc数据源连接方式的支持,并建议用户使用oledb方式,应该将连接字串改为如下方式:</p>
- <p>"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=".$db;</p>
- <p> 错误2:</p>
- <p>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 ............... </p>
- <p><br>这种错误说明你用的是oledb的方式连接的数据库,并且也是数据库的路径造成的.</p>
- <p>解决方法同上,用$_SERVER['DOCUMENT_ROOT']."\db.mdb";方法获取数据库地址</p>
- <p> 错误3:</p>
- <p><span><u></u></span> 代码如下:<br>Warning: odbc_connect() [<br>function.odbc-connect<br>]: SQL error: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序, SQL state IM002 in SQLConnect in E:\wwwroot\phperz.com\phpweb\conn.php on line 8<br></p>
- <p><br>odbc 驱动方式连接的数据库,错误原因多半是你的连接字符串写错了,完整的连接字符串应该是:</p>
- <p><span><u></u></span> 代码如下:<br>$db=$_SERVER['DOCUMENT_ROOT']."\db.mdb";<br>$connstr="Driver={Microsoft Access Driver (*.mdb)};Dbq=$db;Uid=Admin;Pwd=pass";<br>$connid=odbc_connect($connstr,"admin","pass",SQL_CUR_USE_ODBC) or die("数据库打开失败!请联系管理员");<br></p>
- <p>如果你的数据库没有密码以上Uid和Pwd可以省略 </p>
- <p><span><u></u></span> 代码如下:<br>$connstr="Driver={Microsoft Access Driver (*.mdb)};Dbq=$db";<br>$connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC) or die("数据库打开失败!请联系管理员");<br></p>
- <p>错误4:<br>Fatal error: Uncaught exception 'com_exception' with message 'Source: ADODB.ConnectionDescription: 未找到提供程序。该程序可能未正确安装。' in......................<br><br>oledb连接方式,错误原因同上,完整的连接字符串应该是:</p>
- <p><span><u></u></span> 代码如下:<br>$db=$_SERVER['DOCUMENT_ROOT']."\db.mdb";<br>$conn=new com("ADODB.connection");<br>$connstr="Provider=Microsoaft.Jet.OLEDB.4.0;Data Source=".$db; <br>$conn->Open($connstr);<br> </p>