存储过程输出参数疑难问题,诚心请真正的凶猛高手指点存储过程代码:begin
  // 只有一个输出参数:out str varchar(50)
  select * from t1001;       //第一条语句
  set str="hello the world!";//第二条语句,输出参数
end
php代码:$res=mysql_query("call outstatement(@str)",$conn) or die("Query failed 55:" .mysql_error()); 
$res=mysql_query("select @str",$conn) or die("Query failed 66:" .mysql_error());
$row=mysql_fetch_row($res);
echo $row[0];
当存储过程中第一条语句注释掉后,PHP中能输出正确的结果。
当不注释第一条语句时,PHP中产生错误 :“Query failed 66:Commands out of sync; you can't run this command now”实在没辙了,请哪位高手指点一下。谢谢。

解决方案 »

  1.   

    $res=mysql_query("call outstatement(@str)",$conn) or die("Query failed 55:" .mysql_error()); 
    mysql_free_result($res);
    $res=mysql_query("select @str",$conn) or die("Query failed 66:" .mysql_error());
    $row=mysql_fetch_row($res);
    echo $row[0];
      

  2.   


    狼头老大,加你亲自指点的那句后,经测试,问题还是没解决,错误提示也是一样的。还有这个不是返回的多结果,存储过程中用的是 set XXX=YYY 语句。
      

  3.   


    可能你这个存储过程在php中压根就不支持。狼头的思路的正确的。
    还是避免这类用法为妙。
      

  4.   

    select 和 set 两条语句只有一条时,可以在php中得到预想的结果.否则出错.