php读取access数据库问题???

onepointred 2010-04-14 12:53:51
$conn = new COM("ADODB.Connection") or die ("ADO Connection faild.");
$connstr = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=".realpath("app.mdb");
$conn->Open($connstr);

function proshow($condition1,$condition2)
{
if ($condition1=="" || $condition2="")
{
$condition="";
}
else
{
$condition=" where".$condition1."=".$condition2." ";
}
$rr = new COM("ADODB.RecordSet");
$rr->Open("select * from PE_Product '$condition' order by ProductID desc",$conn);
while(!$rr->EOF)
{
$p_name=$rr->Fields("ProductName");
$p_price=$rr->Fields("Price");
echo "<div>名字:".$p_name->value."</div>";
echo "<div>零售价:".$p_price->value."</div>";
$rr->Movenext();
}
}

proshow("","");
$rr->close();

//////////////////
为什么调用proshow()函数会出现错误???

错误提示:
Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> ADODB.Recordset<br/><b>Description:</b> 参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。' in F:\phpsite\shop\index.php:23 Stack trace: #0 F:\phpsite\shop\index.php(23): com->Open('select * from P...', NULL) #1 F:\phpsite\shop\index.php(39): proshow() #2 {main} thrown in F:\phpsite\shop\index.php on line 23
...全文
165 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
onepointred 2010-04-14
  • 打赏
  • 举报
回复
恩。确实!谢谢啊~~
xuzuning 2010-04-14
  • 打赏
  • 举报
回复

$condition1 = 'name';
$condition2 = 'my';


$condition=" where".$condition1."=".$condition2." ";

wherename=my
你说对吗?
应该是
where name='my'
吧?
onepointred 2010-04-14
  • 打赏
  • 举报
回复
恩。 (唠叨) ,确实是因为你说的这个问题。
不过最后一句你说:$condition=" where".$condition1."=".$condition2." ";
产生的 sql 片断是错误的。
为什么呢???
xuzuning 2010-04-14
  • 打赏
  • 举报
回复
function proshow($condition1,$condition2) {
global $conn;
....
}

最好将连接写进函数
function connect($mdb) {
$conn = new COM("ADODB.Connection") or die ("ADO Connection faild.");
$connstr = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=".realpath("$mdb.mdb");
$conn->Open($connstr);
return $conn;
}

function proshow($condition1,$condition2) {
$conn = connect('app');;
....
}

另外
$condition=" where".$condition1."=".$condition2." ";
产生的 sql 片断是错误的。不过对你目前的测试并无影响
onepointred 2010-04-14
  • 打赏
  • 举报
回复
哦。就是。不过我在调用这个函数时时这样写的:
proshow($conn,'','');
提示:Cannot pass parameter 2 by reference in F:\phpsite\shop\index.php on line 10

可$condition1,$condition2确实没有值啊,我该怎么写啊!?
xuzuning 2010-04-14
  • 打赏
  • 举报
回复
$rr->Open("select * from PE_Product '$condition' order by ProductID desc",$conn);

$conn 没有被传递
onepointred 2010-04-14
  • 打赏
  • 举报
回复
我把
function proshow($condition1,$condition2)
改成了
function proshow(&$condition1,&$condition2)

问题还是没有解决。。。
onepointred 2010-04-14
  • 打赏
  • 举报
回复
还是不行,我觉得问题是不是出在函数调用
proshow("","");
????
wisword 2010-04-14
  • 打赏
  • 举报
回复
if ($condition1=="" || $condition2="")
=================================
少了一个=

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧