0

内部にいくつかの PDO 関数を持つデータベース クラスがあります (db.inc.php)。この関数を別の関数から呼び出そうとしています:

// Query method
public function query($query) {
    $this->stmt = $this->dbh->prepare($query);
}

私のグローバル PHP ファイルでは、次を使用してデータベースをインスタンス化しました。

// Instantiate database
$database = new database();

ただし、別の PHP ファイル (user.inc.php) 内の別の関数からこの関数を呼び出そうとすると、次のようになります。

function confirmAccount($key,$id) {
// Check key and id against entry in database
$database->query('SELECT * FROM users WHERE id = :id');
}

次のエラーが表示されます。

致命的なエラー: 10 行目の /home/studevne/public_html/includes/user.inc.php の非オブジェクトに対するメンバー関数 query() の呼び出し

私のPHPファイルはすべて、次のようにグローバルPHPファイルに含まれています。

include_once 'includes/db.inc.php';
include_once 'includes/echo.inc.php';
include_once 'includes/tools.inc.php';
include_once 'includes/user.inc.php';

データベースクラスとその機能の範囲と関係があると推測していますが、これを解決する方法について少し混乱しています。どんな助けでも大歓迎です。

4

1 に答える 1

0

関数に渡す必要があり$databaseます。そうしないと、スコープ外になります。パラメータとして渡すことができます:

function confirmAccount($key,$id,$database) {
    // Check key and id against entry in database
    $database->query('SELECT * FROM users WHERE id = :id');
}

またはグローバルとして:

function confirmAccount($key,$id) {
    global $database;
    // Check key and id against entry in database
    $database->query('SELECT * FROM users WHERE id = :id');
}

グローバルは、乱雑なコードを非常に簡単に記述できるため、一般的に嫌われています。

于 2013-09-01T17:04:10.463 に答える