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);
}

您在上面看到的当前代码不起作用并给我这个错误:

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

我删除了该功能..并且代码没有问题!谁能告诉代码有什么问题?

4

5 回答 5

3

在函数中传递 $db。

function updcfg($condition,$status,$db){
$db->query("UPDATE site_config SET status = '".$status."' WHERE condition = '".$condition."' ");
}
updcfg("home",$home,$db);
于 2013-01-21T06:36:30.010 回答
1

您应该将函数放在 if 语句之外。

于 2013-01-21T06:34:37.017 回答
1

$db没有在函数内部定义updcfg,也没有定义为global. 所以,有三个选项: 1. 使用global关键字:

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

2.传递$db给函数参数:function updcfg($condition, $status, $db) 3.函数内部的init $db(你做的方式)

于 2013-01-21T06:36:05.420 回答
1

请在调用查询方法之前加载数据库类

function updcfg($condition,$status){
$this->load->database();
$this->db->query("UPDATE site_config SET status = '".$status."' WHERE condition = '".$condition."' ");
}
于 2013-01-21T06:36:23.080 回答
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);
于 2013-01-21T06:39:31.233 回答