说明如下:
1、我的存储过程如下(创建一个临时表,然后调用另外一个存储过程,把相关数据写到此临时表,然后通过select语音返回临时表中的数据集):
BEGIN
CREATE TEMPORARY TABLE IF NOT EXISTS tmpLst
(sno int primary key auto_increment,code_value VARCHAR(20),depth int,leaf int);
DELETE FROM tmpLst;CALL sp_createChildLst(rootId,0);select address.id,address.name,address.code_value,address.pid,tmpLst.depth,tmpLst.leaf from tmpLst,address where tmpLst.code_value=address.code_value order by tmpLst.sno;
END
2、调用过程主要如下:
$rootId = '0';
$sql= "call sp_showChildLst( $rootId )";
//获得结果
$result=mysql_query($sql, $webconn) or die(mysql_error());
$note;$i=0; //初始化变量
while($infor=mysql_fetch_array($result,MYSQL_ASSOC))
{.......}
mysql_free_result($result)
3、自己查阅有关网络,大致明白,报错的原因可能是因为我调用存储过程,返回了两个结果集,由于上述代码只关闭了一个,导致第二次调用出错,网络上给出的调用方式大致如下:
if($db->multi_query("call sp_showChildLst( $rootId )")){
do{
if($result = $db->store_result()){
while ($row = $result->fetch_assoc()){
array_push($rows, $row);
}
$result->close();
}
}while($db->next_result());
}
通过循环,获得每个结果集,都关闭掉。4、尚存困难:另外一个结果集是什么结果集?格式或字段有哪些?两个结果集中,我怎么知道哪个结果集是我真正想要的(通过select 从临时表中查询出的结果)????
1、我的存储过程如下(创建一个临时表,然后调用另外一个存储过程,把相关数据写到此临时表,然后通过select语音返回临时表中的数据集):
BEGIN
CREATE TEMPORARY TABLE IF NOT EXISTS tmpLst
(sno int primary key auto_increment,code_value VARCHAR(20),depth int,leaf int);
DELETE FROM tmpLst;CALL sp_createChildLst(rootId,0);select address.id,address.name,address.code_value,address.pid,tmpLst.depth,tmpLst.leaf from tmpLst,address where tmpLst.code_value=address.code_value order by tmpLst.sno;
END
2、调用过程主要如下:
$rootId = '0';
$sql= "call sp_showChildLst( $rootId )";
//获得结果
$result=mysql_query($sql, $webconn) or die(mysql_error());
$note;$i=0; //初始化变量
while($infor=mysql_fetch_array($result,MYSQL_ASSOC))
{.......}
mysql_free_result($result)
3、自己查阅有关网络,大致明白,报错的原因可能是因为我调用存储过程,返回了两个结果集,由于上述代码只关闭了一个,导致第二次调用出错,网络上给出的调用方式大致如下:
if($db->multi_query("call sp_showChildLst( $rootId )")){
do{
if($result = $db->store_result()){
while ($row = $result->fetch_assoc()){
array_push($rows, $row);
}
$result->close();
}
}while($db->next_result());
}
通过循环,获得每个结果集,都关闭掉。4、尚存困难:另外一个结果集是什么结果集?格式或字段有哪些?两个结果集中,我怎么知道哪个结果集是我真正想要的(通过select 从临时表中查询出的结果)????
1、php_mysql 扩展只支持返回一个结果集。如果你有两个结果集,那么第二个是读不到的
不过 php_mysql 被设计成这样:如果第一个结果集为空,则返回第二个结果集。
但尽管如此,后续的查询还是会出现问题。需要重新连接数据库
这也就是 php_mysql 被废止的原因之一2、你的第三段说明,是基于 php_mysqli 扩展的。如果你那样做了,是不会出现问题的3、你都不知道查询将返回什么样的结果,那你的查询目的何在?