//调用第一个存储过程
$rs1= $DB->hxProc_GetCount("call Puser_count(@tc)");
echo "---".$rs1 ."---";//调用第二个存储过程
$rs= $DB->hxProc_GetAll("call Puser_list()");
if($rs)
{
foreach($rs AS $key=>$value)
{
echo "<br>" . $value["user_name"] . "-----" . $value["user_pwd"] . "<br>";
}
//echo $rs["user_name"] . "-----" . $rs["user_pwd"];
}
unset($rs);//出错信息:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\wwwroot\php\huaxusoft\class\mysql.db.class.php on line 271//存储过程一(统计总记录数,并返回总数值):
BEGIN
SELECT COUNT(*) INTO ucount FROM glcity_user;
select ucount;
END//存储过程一(查询表中所有记录,并返回记录集):
BEGIN
SELECT * FROM glcity_user;
END//用到的函数:
function hxQuery($sql,$type="ASSOC")
{
$this->rsType = $type != "ASSOC" ? ($type == "NUM" ? MYSQL_NUM : MYSQL_BOTH) : MYSQL_ASSOC;
$this->result = mysql_query($sql,$this->conn);
$this->queryCount++;
if($this->result)
{
return $this->result;
}
else
{
return false;
}
}//取得满足条件的记录总数值==
function hxProc_GetCount($sql = "")
{
if($sql)
{
$this->hxQuery($sql);
unset($sql);
}
$rsC = mysql_fetch_row($this->result); #返回结果集中行的数目
return $rsC[0];
}
//取得满足条件的记录列表
function hxProc_GetAll($sql="",$nocache=false)
{
if($sql)
{
if($nocache)
{
$this->hxBigQuery($sql);
}
else
{
$this->hxQuery($sql);
}
}
$rs = array();
while($rows = mysql_fetch_array($this->result,$this->rsType)) #从结果集中取得一行作为关联数组,或数字数组,或二者兼有
{
$rs[] = $rows;
}
return $rs;
#在PHP中调用[$rs= $DB->hxGetAll("sql语句");]并输出[if($rs){foreach($rs AS $key=>$value){$value["字段名"];}}]才行
}
$rs1= $DB->hxProc_GetCount("call Puser_count(@tc)");
echo "---".$rs1 ."---";//调用第二个存储过程
$rs= $DB->hxProc_GetAll("call Puser_list()");
if($rs)
{
foreach($rs AS $key=>$value)
{
echo "<br>" . $value["user_name"] . "-----" . $value["user_pwd"] . "<br>";
}
//echo $rs["user_name"] . "-----" . $rs["user_pwd"];
}
unset($rs);//出错信息:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\wwwroot\php\huaxusoft\class\mysql.db.class.php on line 271//存储过程一(统计总记录数,并返回总数值):
BEGIN
SELECT COUNT(*) INTO ucount FROM glcity_user;
select ucount;
END//存储过程一(查询表中所有记录,并返回记录集):
BEGIN
SELECT * FROM glcity_user;
END//用到的函数:
function hxQuery($sql,$type="ASSOC")
{
$this->rsType = $type != "ASSOC" ? ($type == "NUM" ? MYSQL_NUM : MYSQL_BOTH) : MYSQL_ASSOC;
$this->result = mysql_query($sql,$this->conn);
$this->queryCount++;
if($this->result)
{
return $this->result;
}
else
{
return false;
}
}//取得满足条件的记录总数值==
function hxProc_GetCount($sql = "")
{
if($sql)
{
$this->hxQuery($sql);
unset($sql);
}
$rsC = mysql_fetch_row($this->result); #返回结果集中行的数目
return $rsC[0];
}
//取得满足条件的记录列表
function hxProc_GetAll($sql="",$nocache=false)
{
if($sql)
{
if($nocache)
{
$this->hxBigQuery($sql);
}
else
{
$this->hxQuery($sql);
}
}
$rs = array();
while($rows = mysql_fetch_array($this->result,$this->rsType)) #从结果集中取得一行作为关联数组,或数字数组,或二者兼有
{
$rs[] = $rows;
}
return $rs;
#在PHP中调用[$rs= $DB->hxGetAll("sql语句");]并输出[if($rs){foreach($rs AS $key=>$value){$value["字段名"];}}]才行
}
Mysql调用存储过程时,遍历时同一时刻只能有一个结果集可以访问,必须释放前一个结果集,应该在调用完第一个存储过程后执行mysql_free_resultmysql_free_result
(PHP 4, PHP 5)mysql_free_result — 释放结果内存说明
bool mysql_free_result ( resource $result )
mysql_free_result() 将释放所有与结果标识符 result 所关联的内存。 mysql_free_result() 仅需要在考虑到返回很大的结果集时会占用多少内存时调用。在脚本结束后所有关联的内存都会被自动释放。 成功时返回 TRUE, 或者在失败时返回 FALSE. 为向下兼容仍然可以使用 mysql_freeresult(),但反对这样做。
$rs1= $DB->hxProc_GetCount("call Puser_count(@tc)");
echo "---".$rs1 ."---";
mysql_free_result($rs1);//调用第二个存储过程
$rs= $DB->hxProc_GetAll("call Puser_list()");
if($rs)
{
foreach($rs AS $key=>$value)
{
echo "<br>" . $value["user_name"] . "-----" . $value["user_pwd"] . "<br>";
}
//echo $rs["user_name"] . "-----" . $rs["user_pwd"];
}
mysql_free_result($rs);
unset($rs);我这样用出错:
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in D:\wwwroot\php\huaxusoft\admin\article_cp_list.php on line 32
$rs= $DB->hxProc_GetAll("call Puser_list()");
if($rs)
{
foreach($rs AS $key=>$value)
{
echo "<br>" . $value["user_name"] . "-----" . $value["user_pwd"] . "<br>";
}
//echo $rs["user_name"] . "-----" . $rs["user_pwd"];
mysql_free_result($rs);
}unset($rs);
$rs1= $DB->hxProc_GetCount("call Puser_count(@tc)");
返回的是结果集,只有一个值。//调用第二个存储过程
$rs= $DB->hxProc_GetAll("call Puser_list()");
返回的是记录集,有多条记录。单独调用哪一个存储过程都是正确的,并可正常输出(打印),两个存储过程放到同一页页调用就出错了,不管先调用哪一个存储过程都一样。有时间的朋友可加我QQ844918366,我给那个类你们,在这里不好上传那个类,因内容多了点。
谢谢!
我又没有改动什么呀。
如何解决?