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 凡是在执行多查询时,每个查询后都需调用以上这段代码才行。
刚才说的不够准确,但意思是到了 应该是 mysql 扩展会自动选择非空结果集,但 mysql_free_result 函数只能清空第一个结果集。这样 call 的结果集得不到清空,所以出错了
你的 sql 指令是 call audioconver.p_advert_qry('-1',0,1) 吗?
正确吗?结果返回给谁了?
这是“命令不同步”的原因,如果遇到该错误,说明正在以错误顺序调用客户端函数你执行的是 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
凡是在执行多查询时,每个查询后都需调用以上这段代码才行。
应该是 mysql 扩展会自动选择非空结果集,但 mysql_free_result 函数只能清空第一个结果集。这样 call 的结果集得不到清空,所以出错了
$adSearchRs = $config[DAOIMPL]->getADSearchInfo($search,$offset,$page);
$adSearchList = rs2Array($adSearchRs);
mysql_close();所以你可能需要修改数据库类
$adRs = $config[DAOIMPL]->adSearchCount($search);
//$adList = rs2Array($adRs);
$adList=mysql_fetch_array($adRs);
//mysql_free_result($adRs);
mysql_close();
关闭连接,重新连接数据庫还是不能解决这个问题,最有没有办法就好将页面中两个存储过程中的一个改成sql,才间接解决这个问题。