2

クエリを実行するための複数の関数を持つ Database クラスがあります。それらの 1 つは、それらすべての中で最も単純です。

public function query($query) {
    return $this->_link->query($query);
}

$this->_link->query は他のケースでも機能するので、ここでも機能するはずです。クラスのインスタンスを含むファイルから、次のようにします。

function createLineChart() {

    $query = "select * from tags";
    $result = $db->query($query);

    // do something with result
}

createLineChart();

しかし、それは $result 行で壊れます。クエリも有効です。私はそれをテストしました。何か不足していますか?

4

3 に答える 3

2
function createLineChart() {
    var_dump($db);
    // this should probably return 'undefined'
    global $db;
    // so globalize it!
    $query = "select * from tags";
    $result = $db->query($query);
    // do something with result
}
于 2013-01-05T16:26:45.890 に答える
2

あなたの問題は機能$dbの範囲外ですcreateLineChart()。グローバルな方法を使用できます。

function createLineChart() {
    global $db; // <-- make the db var become available
    $query = "select * from tags";
    $result = $db->query($query);

    // do something with result
}

または、$dbオブジェクトを引数として関数に渡します。

function createLineChart($db) {

    $query = "select * from tags";
    $result = $db->query($query);

    // do something with result
}

createLineChart($db);

Variable Scope の詳細については、マニュアル を参照してください。

于 2013-01-05T16:27:11.557 に答える
1

がクラス変数の場合$db、次のように参照する必要があります。

$result = $this->db->query($query);
于 2013-01-05T16:09:51.560 に答える