2013-01-21 178 views
2
if(!empty($home) && !empty($title) && !empty($meta)) 
{ 

function updcfg($condition,$status){ 
$db->query("UPDATE site_config SET status = '".$status."' WHERE condition = '".$condition."' "); 
} 
updcfg("home",$home); 
updcfg("title",$title); 
updcfg("meta",$meta); 
updcfg("news",$news); 
} 

當前的代碼,你看到上面的不工作,給我這個錯誤:致命錯誤在PHP

Fatal error: Call to a member function query() on a non-object in /home/main.php on line 20 

我刪除功能..和代碼沒有問題的工作!任何人都可以告訴代碼有什麼問題嗎?

+0

哪裏是你的'$ db'聲明? – coolguy

+0

$ db不是一個對象,所以它不存在 –

+0

你需要初始化'$ db',也許更多的代碼將幫助 –

回答

3

在函數中傳遞$ db。

function updcfg($condition,$status,$db){ 
$db->query("UPDATE site_config SET status = '".$status."' WHERE condition = '".$condition."' "); 
} 
updcfg("home",$home,$db); 
1

您應該將該函數放在if語句之外。

1

$db沒有在updcfg函數內定義,也沒有定義爲global。因此,有三個oprions: 1.使用global關鍵字:

function updcfg($condition,$status){ 
global $db; 

2.通$db給函數的參數:function updcfg($condition, $status, $db) 3.初始化$db裏面的功能(你做的方式)

1

請在調用查詢方法前加載數據庫類

function updcfg($condition,$status){ 
$this->load->database(); 
$this->db->query("UPDATE site_config SET status = '".$status."' WHERE condition = '".$condition."' "); 
} 
+0

如果確定存在非靜態對象,請使用'$ this';) –

0

您需要初始化$db變量。如果你已經初始化之前是不是updcfg功能裏面活着,但你可以通過$db上下文參數:

function updcfg($condition, $status, $db){ 
    $db->query("UPDATE site_config SET status = '".$status."' WHERE condition = '".$condition."' "); 
} 
$db = new .... 
#Now you can do this 
updcfg("home",$home, $db); 
updcfg("title",$title,$db); 
updcfg("meta",$meta,$db); 
updcfg("news",$news,$db);