第一组执行记算总数和返回记录集用的都是tbl_name表
第二组执行记算总数和返回记录集用的都是tbl_hobby表如果只执行其中任意一组,就会正确,但若一起执行,第二组就会失败.
比如存储过程a,还有一个是存储过程b,如果a执行完再执行b,是正确的,如果a执行完再执行b,再执行a,再执行b,那第二次的a和b就会错误.

解决方案 »

  1.   

    忘说重要的一点了,第一次执行那两个存储过程是在函数内,函数开头用了global $db;,我发现如果再创建一个新的$db1,然后在函数里面用$db1去执行,第二次执行两个存储过程时用$db,这样就正确了,不知道这是为什么啊,我不想创建两个$db类,有什么好的方法吗?
      

  2.   

    看是你的tbl_hobby表里有没有数据或者你直接写sql语句执行下看会不会有问题
      

  3.   

    同一个存储过程执行两次就失败?可能是你的存储过程有问题$result = $db->query($sql);
    当执行失败的时候就不能返回哈法的对象,自然也就没有fetch_array()了
    这又从另一个方面说明你的数据库类设计有问题
      

  4.   

    tbl_hobby里面有数据,$db是一个连接对像,用5.0里面的mysqli
      

  5.   

    如果我创建两个连接对像,一个叫$db,一个叫$db1,再执行二遍上面二个存储过程,就正确了.这代表什么啊?是不是如果用一个$db去执行上述操作,执行完应该释放$db?我用了unset没用啊,谢谢再帮下我吧
      

  6.   

    $row       = $result->fetch_array();
    $row       = $db->fetch_array($result);
      

  7.   

    释放$db了,还是没有,试过用新的变量也没用.如果再创建一个数据库连接对像$db1,然后一组用$db1,一组用$db,才能解决,那这样两个连接对像就没效率了,怎么办啊???
      

  8.   

    你是不是在函数里调用了。$db必须建成global变量$db=new db()....function 调用1()
    {
      global $db;
      $db->query(...
    }function 调用2()
    {
      global $db;
      $db->query(...
    }
      

  9.   

    $db->query("CALL tets.sp_select_count('".$likeSql."',@recordCount)");
    $db->query("CALL test.sp_select_result('".$limitSql."')");这里参数不同,或许是这个原因,我没研究过mysql的存储过程。