*** 高难问题,关于数据库返回结果,请教各位,UP有分! *** 参照PHPLIB中的数据类,更换数据时只要更换操作基类就可以了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 去PHPE。NET下载一个PHPLIB看看吧。不过好像没有ACCESS的类 你的思路有问题,不仅仅是显示返回结果的问题!你可以使用数据库类,比如adodb<?php// 引入 ADODBinclude('adodb/adodb.inc.php');// 建立连线物件,根据你使用的数据库生成相应的对象$conn = &ADONewConnection('mssql');// 不侦错$conn->debug=false;// DSN 四项基本资料设定,根据你的数据库如实填写$mch="localhost";$user="sa";$pwd="";$database="test";// 连接至资料库 test$conn->Connect($mch, $user, $pwd, $database);// 执行 Select 由表格 t 取出资料,// 它会传回一个 ADORecordSet 记录集物件 $rs (RecordSet)// 实际上 $rs 是一个 cursor 指标,它拥有目前的记录(row 或称 record),// 该记录的所有栏位资料的内容,存放在 fields 这个阵列之中// ,以数字为索引,第一个由 0 开始$rs = &$conn->Execute('select * from tbl_name');// 若 $rs 为 false,则秀出错误讯息if (!$rs) { print $conn->ErrorMsg(); } else {// 当尚未到达 记录集 $rs 的结束位置(EOF:End Of File)时,(即:还有记录尚未取出时) while (!$rs->EOF) { // 秀出所有栏位,$FieldCount() 会传回栏位总数 for ($i=0, $max=$rs->FieldCount(); $i < $max; $i++) { print $rs->fields[$i] . ", "; } // 移至下一笔记录 $rs->MoveNext(); // 换列 echo "<br>\n"; }}//$rs->Close(); // 可不用//$conn->Close(); // 可不用?> 就是因为以前用ADODB有些问题,现在才想自己写个简单的类,解决这些问题的.我用ADODB时,不能向access里面插入数据.所以才想自己写一个类,现在遇到最大的问题用是回显了. 我用ADODB时,不能向access里面插入数据?先解决这个问题可能比写个类还快呢要说一下的是,用access好像不能有自动编号id的 ADODB很好了,不能插入数据那是你的问题 “我用ADODB时,不能向access里面插入数据”这多半是你没有正确转义“'”或你没有使用adodb提供的转义方法进行转义: ' ==> ''也可能是把保留字做字段名时没有使用正确的声明符: date ==> [date]也可能是在sql语句中给数值型字段的内容加上了''总之,目前流行的数据库类已经生存多年了。应该相信开发者们的水平(无论是数据库的操作还是php编程)比自己高很多,出错是小概率事件。当然,如果觉得他们提供的功能不够用或太庞大,自己写一个也无妨。to zhongjihang() access 是有自动编号id的下面讨论一下你的程序在你的程序中你使用的不同的查询结果资源:传入的$_rs和类属性$this->_rs这显然是不妥当的,两者只能用一种。否则极易产生混乱操作access实际使用的是odbc函数库。在obdc中返回结果数组可用odbc_fetch_array或odbc_fetch_into,不过在有些版本的php中odbc_fetch_array不好用你可以写一个access_fetch_arrayfunction access_fetch_array($rs) { return odbc_fetch_array($rs);}或function access_fetch_array($rs) { if(odbc_fetch_into($rs, $ar)) return $ar; return false;}于是你的GetRow可写做function &GetRow($_rs){ $fun = $dbclass.'_fetch_array'; return $fun($rs);} 我用ADODB插入时只写了两个字段,是用一个特简的数据库做的实验,字段只有两个,一个ID,一个nameid是int型,name是char型,SQL语句是这样写的:insert into tmpdb(name) values('ddd') 用odbc_fetch_array,odbc_fetch_into不行,我的access不是用odbc连接的,而是用:$conn=new COM("ADODB.Connection");$dsn="DRIVER={Microsoft Access Driver (*.mdb)};DBQ=".realpath($_dbName).";UID=".$_uid.";Pwd=".$_pwd.";";$conn->open($dsn);连的,那又应该怎么写:function access_fetch_array($rs) { return odbc_fetch_array($rs);}段代码. php使用gmail群发邮件问题 strtotime问题 问php正则表达式问题 title标签输出不了PHP程序 神奇的ob_clean() 很奇怪的一个php代码加密优化的问题 @mysql_pconnect mysql_pconnect区别 在寫第一個php程序時出現:mysql_pconnect(): Can't create TCP/IP socket不知怎麽辦??? 为什么mysql中选择的时候,不能部分匹配? 连接mysql速度很慢,为什么?? quickform的问题请教 什么时候PHP也能真正OO一下啊!
你可以使用数据库类,比如adodb<?php
// 引入 ADODB
include('adodb/adodb.inc.php');// 建立连线物件,根据你使用的数据库生成相应的对象
$conn = &ADONewConnection('mssql');// 不侦错
$conn->debug=false;// DSN 四项基本资料设定,根据你的数据库如实填写
$mch="localhost";
$user="sa";
$pwd="";
$database="test";// 连接至资料库 test
$conn->Connect($mch, $user, $pwd, $database);// 执行 Select 由表格 t 取出资料,
// 它会传回一个 ADORecordSet 记录集物件 $rs (RecordSet)
// 实际上 $rs 是一个 cursor 指标,它拥有目前的记录(row 或称 record),
// 该记录的所有栏位资料的内容,存放在 fields 这个阵列之中
// ,以数字为索引,第一个由 0 开始
$rs = &$conn->Execute('select * from tbl_name');// 若 $rs 为 false,则秀出错误讯息
if (!$rs) {
print $conn->ErrorMsg();
} else {// 当尚未到达 记录集 $rs 的结束位置(EOF:End Of File)时,(即:还有记录尚未取出时)
while (!$rs->EOF) {
// 秀出所有栏位,$FieldCount() 会传回栏位总数
for ($i=0, $max=$rs->FieldCount(); $i < $max; $i++) {
print $rs->fields[$i] . ", ";
} // 移至下一笔记录
$rs->MoveNext();
// 换列
echo "<br>\n";
}
}
//$rs->Close(); // 可不用
//$conn->Close(); // 可不用
?>
我用ADODB时,不能向access里面插入数据.
所以才想自己写一个类,现在遇到最大的问题用是回显了.
先解决这个问题可能比写个类还快呢
要说一下的是,用access好像不能有自动编号id的
这多半是你没有正确转义“'”或你没有使用adodb提供的转义方法进行转义: ' ==> ''
也可能是把保留字做字段名时没有使用正确的声明符: date ==> [date]
也可能是在sql语句中给数值型字段的内容加上了''
总之,目前流行的数据库类已经生存多年了。应该相信开发者们的水平(无论是数据库的操作还是php编程)比自己高很多,出错是小概率事件。
当然,如果觉得他们提供的功能不够用或太庞大,自己写一个也无妨。to zhongjihang()
access 是有自动编号id的下面讨论一下你的程序
在你的程序中你使用的不同的查询结果资源:传入的$_rs和类属性$this->_rs
这显然是不妥当的,两者只能用一种。否则极易产生混乱操作access实际使用的是odbc函数库。
在obdc中返回结果数组可用odbc_fetch_array或odbc_fetch_into,不过在有些版本的php中odbc_fetch_array不好用
你可以写一个access_fetch_arrayfunction access_fetch_array($rs) {
return odbc_fetch_array($rs);
}
或
function access_fetch_array($rs) {
if(odbc_fetch_into($rs, $ar))
return $ar;
return false;
}
于是你的GetRow可写做
function &GetRow($_rs){
$fun = $dbclass.'_fetch_array';
return $fun($rs);
}
id是int型,name是char型,SQL语句是这样写的:insert into tmpdb(name) values('ddd')
$conn=new COM("ADODB.Connection");
$dsn="DRIVER={Microsoft Access Driver (*.mdb)};DBQ=".realpath($_dbName).";UID=".$_uid.";Pwd=".$_pwd.";";
$conn->open($dsn);
连的,那又应该怎么写:
function access_fetch_array($rs) {
return odbc_fetch_array($rs);
}
段代码.