2015-06-27 20 views
0

我使用Easyphp進行默認設置的開發。我的所有代碼都可以在本地Easyphp數據庫上正常工作。但是當我在使用linux服務器的webhosting上上傳它時,所有帶對象的函數突然間都在迴應OOP錯誤。這是exp。正常功能我正常寫道:Easyphp工作,linux服務器返回調用非對象的成員函數

function user_data($user_id){ 
    global $db; 
    $data = array(); 
    $user_id = (int)$user_id; 

    $func_num_args = func_num_args(); 
    $func_get_args = func_get_args(); 

    if($func_num_args > 1) { 
     unset($func_get_args[0]); 
     $fields = '`' . implode('`, `', $func_get_args) . '`'; 
     $query = "SELECT $fields FROM users WHERE user_id = '$user_id'"; 
     $result = $db->query($query); 
     $data = $result->fetch_assoc(); 
     return $data; 
     $result->free(); 
     $data->free(); 
    } 
} 

一切工作正常我的本地PHP服務器上。我上傳它與Linux服務器我得到的虛擬主機後像行「調用一個成員函數FETCH_ASSOC()在非對象錯誤」:

$data = $result->fetch_assoc(); 

誰能告訴我什麼,我寫錯了嗎?爲的EasyPHP

DB連接:對於Linux服務器

$db = new mysqli("$DB_HOST","$DB_USER","$DB_PASSWORD","$DB_NAME"); 

DB連接:

$socket = "/tmp/mysql51.sock"; 
$db = new mysqli("$DB_HOST","$DB_USER","$DB_PASSWORD","$DB_NAME", 0, $socket); 

謝謝

編輯 - 解決方案

我找到了錯誤的原因。它是在PHP代碼中的SQL查詢中寫入變量。查詢應該是這樣的:

$ query =「SELECT $ fields FROM users WHERE user_id ='」。$ user_id。「'」;

錯誤的原因仍然是我的m。。它可以是平臺或PHP版本。

回答

0

新的mysqli沒有返回一個對象,它看起來像mysqli擴展不加載

你可能想打開一個連接到數據庫之前,要做到這一點

if (! extension_loaded("mysqli")) { ... } 

,你可以在這裏嘗試http://micmap.org/php-by-example/en/function/extension_loaded

+0

嗨mcorne - thx的評論。我試過你的建議,mysqli extenstion正在工作。我發現一個解決方案 - 問題是在SQL查詢PHP變量分配。我用解決方案編輯了問題。仍然不知道它是如何在一個平臺上工作的,而不是。 –

相關問題