Call to a member function fetch_array() on a non-object错误,求助!
我有两个存储过程:
---------------------------------------
1,计算总数:
DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`sp_select_count` $$
CREATE PROCEDURE `sp_select_count`(IN sp_likeSql TEXT,OUT recordCount INT)
BEGIN
SET @sqlStr = CONCAT('select count(id) into @recordCount from ',sp_likeSql);
PREPARE sqlstmt FROM @sqlStr;
EXECUTE sqlstmt;
SET recordCount = @recordCount;
DEALLOCATE PREPARE sqlstmt;
END $$
DELIMITER ;
---------------------------------------
2,返回记录集
DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`sp_select_result` $$
CREATE PROCEDURE `sp_select_result`(IN likeSql TEXT)
BEGIN
SET @sqlStr = CONCAT('select * from ',likeSql);
PREPARE sqlstmt FROM @sqlStr;
EXECUTE sqlstmt;
DEALLOCATE PREPARE sqlstmt;
END $$
DELIMITER ;
问题是当我执行一次以上两个文件时,是正确的,结果输出也没问题,但当我在一个文件的前后,分别执行两次以上存储过程时,在第二次执行时,就提示Call to a member function fetch_array() on a non-object.
代码是:
执行第一个存储过程的代码,计算总和:
$likeSql = 'tbl_name WHERE name = "'.$getName.'"';
$db->query("CALL tets.sp_select_count('".$likeSql."',@recordCount)");
$result = $db->query("select @recordCount");
$row = $result->fetch_array();
$recordCount = $row['@recordCount'];
执行第二个存储过程的代码,返回记录集,用于在页面上循环输出:
$result = $db->query("CALL test.sp_select_result('".$limitSql."')");
如果只执行以上代码一次,是没问题的,如果分别执行两次,第二次就会出现Call to a member function fetch_array() on a non-object,我试了下,第二次执行时 $result 并不是返回一个对像,问题应该在这里吧,但为什么执行一次没问题,执行二次却有错误?难道存储过程执行完一次后要关闭什么东西吗?