0

以下のクエリを実行すると、致命的なエラーが発生します。

$stmt = $db->query('SELECT * FROM comments LIMIT 50');
    while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo $result['name'] . ':' . strip_tags($result['message']);
    }

戻り値:

  Fatal error: Call to a member function query() on a non-object

$db を次のように設定します。

try {$db = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');}
catch(PDOException $e) {echo $e->getMessage();}

このエラーの原因を知っている人はいますか?

4

2 に答える 2

1

クエリの実行によるエラーは発生していません。実際、クエリは決して実行しようとしません

このエラー -

Fatal error: Call to a member function query() on a non-object

$dbはオブジェクトではないことを示しています。

インスタンス化されていないか、別のスコープ内でインスタンス化されています。

于 2012-11-21T20:18:33.780 に答える
0

$db は、使用しているスコープで適切に初期化されていません。

global $db;スコープの問題かどうかを確認するために、両方の前に a を付けてみてください。

global $db;
try {$db = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');}
catch(PDOException $e) {echo $e->getMessage();}

global $db;
$stmt = $db->query('SELECT * FROM comments LIMIT 50');
    while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo $result['name'] . ':' . strip_tags($result['message']);
    }
于 2012-11-21T20:18:02.730 に答える