2013-01-21 191 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);