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
我删除了函数..代码工作没有问题!任何人都可以告诉代码有什么问题吗?
答案 0 :(得分:3)
在函数中传递$ db。
function updcfg($condition,$status,$db){
$db->query("UPDATE site_config SET status = '".$status."' WHERE condition = '".$condition."' ");
}
updcfg("home",$home,$db);
答案 1 :(得分:1)
您应该将该函数放在if语句之外。
答案 2 :(得分:1)
$db
未在updcfg
函数内定义,未定义为global
。所以,有三个选择:
1.使用global
关键字:
function updcfg($condition,$status){
global $db;
2。将$db
传递给函数参数:function updcfg($condition, $status, $db)
3.函数内的init $db
(你的方式)
答案 3 :(得分:1)
请在调用查询方法之前加载数据库类
function updcfg($condition,$status){
$this->load->database();
$this->db->query("UPDATE site_config SET status = '".$status."' WHERE condition = '".$condition."' ");
}
答案 4 :(得分: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);