我的项目在我的本地计算机上工作正常,但在Web服务器上却没有。我认为这是存储过程,因为我得到的错误是:
Fatal error: Call to a member function fetch_array() on a non-object in ...
数据库的整理是“utf8_general_ci”。
只是一个简单的例子:
我有一个名为offices的存储过程:
CREATE PROCEDURE offices()
BEGIN
SELECT * FROM offices;
END//
和php代码:
<?php
require ("db.php");
$db = dbConnect();
$result = $db->query("CALL offices()");
while(list($id, $city, $address) = $result->fetch_array())
echo "($id) $city: $address ";
?>
答案 0 :(得分:1)
当您CALL offices()
手动时,数据库服务器上会发生什么?有错误吗?如果我不得不猜测,看起来offices()
函数没有在服务器上定义,或者在调用时失败(表offices
不存在?)。
答案 1 :(得分:0)
对我看来,$ result不是对象或未初始化。你能告诉我们db库中的代码吗?特别是查询功能......
答案 2 :(得分:0)
确保用于安装架构的db用户具有创建存储过程的权限。如果您不确定它们是否在服务器上,您可以执行
SELECT * FROM `information_schema`.`ROUTINES`;
..查看哪些程序已成功创建。
请记住,大多数共享托管服务不支持触发器,程序等。
答案 3 :(得分:0)
您可能正在远程服务器上运行不同版本的数据库。 所以查询方法失败了,并没有返回应返回的内容。
答案 4 :(得分:0)
看起来您的身份验证不允许在服务器上使用数据库程序