解决方案 »

  1.   

    那就是 $adSearchRs = $config[DAOIMPL]->getADSearchInfo($search,$offset,$page); 已经出错了!
    你的 sql 指令是 call audioconver.p_advert_qry('-1',0,1) 吗?
    正确吗?结果返回给谁了?
      

  2.   

    commands out sync: you can't run this command new
    这是“命令不同步”的原因,如果遇到该错误,说明正在以错误顺序调用客户端函数你执行的是 call 命令,没有 select
    所以会产生两个结果集
    第一个是 select 的结果集,由于没有 select 命令,所以是无效的不能 php 处理成资源
    第二个才是 call 的结果集虽然 mysql 提供了 C 函数 mysql_next_result 用于移动结果集
    但 php 的 mysql 扩展并没有提供该函数,所以可认为php 的 mysql 不能很好的支持存储过程(因为 mysql4 并不支持存储过程)
    mysqli 扩展提供了 mysqli_next_result 函数,所以如果使用了存储过程,最好是用 mysqli 驱动附上解决该问题的 C 代码 do
        {
             result=mysql_store_result(&conn);
              mysql_free_result(result);
        }while(!mysql_next_result(&conn)); // to solve the "2014:Commands out of sync; " problem
        凡是在执行多查询时,每个查询后都需调用以上这段代码才行。
      

  3.   

    刚才说的不够准确,但意思是到了
    应该是 mysql 扩展会自动选择非空结果集,但 mysql_free_result 函数只能清空第一个结果集。这样 call 的结果集得不到清空,所以出错了
      

  4.   

    网上也是这么说,但mysql 没有这个方法,应该是mysqli_store_result 吧
      

  5.   

    对,在每次执行存储过程并读取数据之后
    $adSearchRs = $config[DAOIMPL]->getADSearchInfo($search,$offset,$page);
    $adSearchList = rs2Array($adSearchRs);
    mysql_close();所以你可能需要修改数据库类
      

  6.   

    不对,应该是
    $adRs = $config[DAOIMPL]->adSearchCount($search);
    //$adList = rs2Array($adRs);
    $adList=mysql_fetch_array($adRs);
    //mysql_free_result($adRs);
    mysql_close();
      

  7.   


    关闭连接,重新连接数据庫还是不能解决这个问题,最有没有办法就好将页面中两个存储过程中的一个改成sql,才间接解决这个问题。