存储过程代码: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];因为你的这个存储过程返回了一个结果集 select * from t1001; 
      

  2.   


    加上红色mysql_free_result($res);
    语句后,经测试,还是通不过。一样的错误提示。
      

  3.   

    call 存储过程名称(@name参数);
    select @name参数