首先建立了一个存储过程test();代码为:create procedure test()
begin
select * from `table`;
end //而且创立成功!然后在php页中调用:
$query=mysql_query("call test()");//调用不成功,改成$query=mysql_query("select * from `table`")就可以成功输出
$row=mysql_fetch_array($query);
print_r($row);//输出不成功,提示错误
为什么会call test()会不成功,会提示错误,
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\sql\pro2.php on line 10而改成$query=mysql_query("select * from `table`")就可以成功输出

解决方案 »

  1.   

    MySQL扩展也是支持存储过程的,不过只支持无返回结果的存储过程,如果该存储过程存在输出,这个调用就会抛出一个错误
    解决方法是使用MySQLi扩展
      

  2.   

    define('CLIENT_MULTI_RESULTS', 131072);
    $link = mysql_connect("127.0.0.1", "root", "",1,CLIENT_MULTI_RESULTS) or die("Could not connect: ".mysql_error());
    mysql_select_db("test") or die("Could not select database");
    $query=mysql_query("call test()");
    $row=mysql_fetch_array($query);
    print_r($row);//输出成功调式成功~
      

  3.   

    CLIENT_MULTI_RESULTS
    通知服务器客户端可以处理由多语句或者存储过程执行生成的多结果集。当打开CLIENT_MULTI_STATEMENTS时,这个标志自动的被打开。