2010-08-30 158 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過程

相關問題