mysql存储过程无法正常工作

时间:2014-07-21 01:51:28

标签: mysql stored-procedures mysqli sqlyog

我试图使用以下代码调用mysql存储过程:

 $mysqli = new mysqli("localhost", "user", "password", "mydatabase");
 $result = $mysqli->query('CALL storedproc_allusers()');

 while($row = $result->fetch_array(MYSQLI_BOTH))
 {
 echo $row['email'] . "<br />";
 }

存储过程是:

 USE `mydatabase`$$
 DROP PROCEDURE IF EXISTS `storedproc_allusers`$$
 CREATE DEFINER=`user`@`xx.xxx.xx.xx` PROCEDURE `storedproc_allusers`()
 BEGIN
 SELECT * FROM users;
 END$$
 DELIMITER ;

我知道我与数据库的连接很好,因为如果我运行一个简单的选择查询,我会得到我所期望的。

运行上述操作时出现以下错误:

致命错误:在非对象等上调用成员函数fetch_array(),这导致我认为查询没有返回任何内容。

我使用SQLYOG并且可以从那里成功运行该过程。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以在http://php.net/manual/en/mysqli.quickstart.stored-procedures.php找到多个示例。

$mysqli = new mysqli("localhost", "user", "password", "mydatabase");
$mysqli->query('CALL storedproc_allusers()');
do {
    if ($result = $mysqli->store_result()) {
        var_dump($result->fetch_all());
        $result->free();
    }
} while ($mysqli->more_results() && $mysqli->next_result()) ;

试试这个