2010-08-30 99 views
0

我的项目在本地机器上正常工作,但在Web服务器上无法正常工作。我认为它是存储过程,因为我得到的错误是:我的项目在本地机器上运行良好,但在网络服务器上运行不正常

Fatal error: Call to a member function fetch_array() on a non-object in ... 

数据库的排序规则是“utf8_general_ci”。

只是一个简单的例子:

我有一个存储过程调用办事处:

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 "; 

?> 
+2

你应该为你的query()方法添加一些错误检查。 – ZeissS 2010-08-30 11:16:59

+1

'$ db'究竟是什么? MysqlI的一个实例? – VolkerK 2010-08-30 11:53:27

回答

1

在数据库服务器上会发生什么,当你CALL offices()手动?任何错误?如果我不得不猜测,看起来offices()函数没有在服务器上定义,或者调用时失败(表offices不存在?)。

0

对我来说,它看起来像$结果不是一个对象或未初始化。你可以告诉我们你的db库中的代码吗?特别是查询功能...

0

确保您用于安装架构的db用户具有创建存储过程的权限。如果您不确定它们是否在服务器上,则可以执行以下操作:

SELECT * FROM `information_schema`.`ROUTINES`; 

..要查看哪些过程已成功创建。

记住大多数共享主机服务不支持触发器,过程等

0

你可能在远程服务器上运行不同版本的数据库。 所以查询方法失败,并没有返回应该返回的内容。

0

看起来像你的认证没有被允许在服务器上使用DB过程

相关问题