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

$dbupdcfg関数内で定義されておらず、 としても定義されていませんglobal。したがって、3 つのオプションがあります。 1.globalキーワードを使用します。

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

$db2.関数の引数に渡します: function updcfg($condition, $status, $db) 3. 関数内で初期$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 に答える