php中的致命错误

时间:2013-01-21 06:32:14

标签: php

    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

我删除了函数..代码工作没有问题!任何人都可以告诉代码有什么问题吗?

5 个答案:

答案 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);