你可以通过PHP的Odbc_connect方式
另外也可以这样:用ADO COM组件的方式,要注意的是,用这个方式,还是必须配置一个系统ODBC数据库源,但注意不能用像asp连接无数据源的方式连接。
以下用的是Win2000P,系统ODBC数据源名称是:odbc1,该数据库为:db1,数据库db1有一个表,名称为:table1,表table1有两个字段id(自动增长)和field1(str(10)),里面随便输入一些测试数据。
<?$conn = @new COM("ADODB.Connection") or die("ADO 连接创建失败!");$rs = @new COM("ADODB.RecordSet") or die("ADO 记录集创建失败!");$conn->open("Provider=MSDASQL.1;Data Source=odbc1;"); $rs = $conn->Execute("SELECT * FROM table1 ORDER BY id DESC;"); $row=1; echo "<table border=1>";while(!$rs->EOF){ echo "<tr>"; for($col=0;$col<$rs->Fields->Count;$col++) { echo "<td>"; echo $rs->Fields[$col]->Name.":".$rs->Fields[$col]->Value; echo "</td>"; } $row++; echo "</tr>"; $rs->MoveNext();}echo "</table>";$rs->Close;$conn->Close;?>
另外也可以这样:用ADO COM组件的方式,要注意的是,用这个方式,还是必须配置一个系统ODBC数据库源,但注意不能用像asp连接无数据源的方式连接。
以下用的是Win2000P,系统ODBC数据源名称是:odbc1,该数据库为:db1,数据库db1有一个表,名称为:table1,表table1有两个字段id(自动增长)和field1(str(10)),里面随便输入一些测试数据。
<?$conn = @new COM("ADODB.Connection") or die("ADO 连接创建失败!");$rs = @new COM("ADODB.RecordSet") or die("ADO 记录集创建失败!");$conn->open("Provider=MSDASQL.1;Data Source=odbc1;"); $rs = $conn->Execute("SELECT * FROM table1 ORDER BY id DESC;"); $row=1; echo "<table border=1>";while(!$rs->EOF){ echo "<tr>"; for($col=0;$col<$rs->Fields->Count;$col++) { echo "<td>"; echo $rs->Fields[$col]->Name.":".$rs->Fields[$col]->Value; echo "</td>"; } $row++; echo "</tr>"; $rs->MoveNext();}echo "</table>";$rs->Close;$conn->Close;?>
不好意思!~~~
用ado com
这是我以前用过的一段代码,没问题
var $con=new COM("ADODB.Connection");
var $constr="driver={Microsoft Access Driver (*.mdb)};dbq=C:\\Inetpub\\wwwroot\\www\\admin\\access_mysql\\test.mdb";
$con->Open($constr);
var $rs=$con->Execute("select * from newall");注意:
dbq后的库路径一定要用\\, 表转义"\" 这是和asp不同之处.
dbq的路径你可以使用$PATH_TRANSLATED环境变量获得
比如:
echo addslashes(substr(getenv("PATH_TRANSLATED"),0,strrpos(getenv("PATH_TRANSLATED"),"\\")));
等同asp的 mappath();
用ado,不也是“有源”的吗?
是啊!我以前试过了,无源的好象真的不太好做哦。
反正,到现在我也没想出什么解决的方法
to: 8988(晓月)
你用的服务端,支持access吗?
这很重要的,要实现无源方式一定要有那个数据库的驱动程序的
支持COM,否则访问中文字段会有乱码。
此外,要注意服务器端的ado 的版本,低版本的ado不支持access2k数据库。
我装了MS office 2000中的access,在ASP下可以使用。
如:
Set conn=Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=test.mdb"
Set rs=Server.Createobject("ADODB.Recordset")
rs.Open "Select * From 工资",conn,1 '只读方式打开或
rs.Open "Select * From 工资",conn,1,3 '读写方式打开2、测试tncboy(IWTSJ)给出的代码。Error!
我在服务器上测试以下PHP代码
<?
$con=new COM("ADODB.Connection");
$constr="driver={Microsoft Access Driver (*.mdb)};dbq=L:\\php\\test.mdb";
$con-> Open( $constr );
$rs=$con->Execute("select * from 工资");
.....
?>
执行到$rs=$con->Execute("select * from 工资"); 时出错。
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:3、新问题
ASP中可以用以下方式打开数据表,PHP怎么做?特别在读写方式中可以用
rs("user")="王小鸭"
rs.Update
方式更新数据表,PHP可以吗?rs.Open "Select * From 工资",conn,1 '只读方式打开或
rs.Open "Select * From 工资",conn,1,3 '读写方式打开
$constr="driver={Microsoft Access Driver (*.mdb)};dbq=L:\\php\\test.mdb";
$con-> Open( $constr );
$rec=new COM("ADODB.Recordset");
$rec->open("Select * From 工资",$con,3)
echo $rec->fields["name"]->value;
$rec->fields["name"]->value=$newvalue;
$rec->update();
$rec->close();
$rec=null;
怎么执行到 $rec->open("Select * From 工资",$con,3) 总是通不过。
错误信息如下:
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
你所理解的无源是什么? 反正我认为8988要求的只是不注册 dsn,应该没错吧to 8988
呵, 我用那段代码, 很正常,可以读,写mdb, 完全没问题啊!
看你的提示信息
数据库本身已经连接上了, 要不就是库方面的原因, 要不是sql语句原因建议:
可以把mdb文件放到web server安装目录下某处
可以把表名改为英文试试..
反正有问题是希奇古怪的!
搞明白了這個東西就無需煩惱了!
从结果来看,的确已经与数据库连接上了,就是不能通过SQL命令。
我在ASP下完全正确,PHP就不行了。
而且MDB的位置移过许多地方,都不行。
看来我还得把这篇帖子保留几天。
$rec->open("Select * From 工资",$con,3)
少打个参数了……
$rec->open("Select * From 工资",$con,1,3)
或$rec->open("Select * From 工资",$con,2,3)
另外你的php的版本是多少呀?
(但是,image字段还是不支持)
此外,ado太慢了……