我试图使用以下代码调用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并且可以从那里成功运行该过程。任何帮助将不胜感激。
答案 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()) ;
试试这个