2

私のエラー:

( ! ) Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\PDO\index.php on line 13

私のコード:

<?php 

$config['db'] = array(
    'host'      =>      'localhost',
    'username'  =>      'root',
    'password'  =>      '',
    'dbname'    =>      'learnpdo'
);

$db = new PDO('mysql:host='.$config['db']['host'].';dbname'.$config['db']['dbname'], $config['db']['username'], $config['db']['password']);
$query = $db->query("SELECT articles . title FROM articles");

while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
    echo $row['title'];
}

このような質問がたくさんあることは知っていますが、どれもうまくいかないようです。

ありがとう


編集:

以下の皆さんのおかげで、上記は修正されました。:)今、私は別のエラーが発生しています:

Notice: Undefined index: id in C:\wamp\www\PDO\index.php on line 7

これが私のデータベースです:

http://d.pr/i/vcod

これが私のコードです:

$db = new PDO('mysql:host=localhost;dbname=learnpdo;charset=UTF-8', 'root', '');
$query = $db->query("SELECT `articles`.`title` FROM `articles`");

while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
    echo $row['id'];
}
4

3 に答える 3

6

PDO::query()falseクエリが失敗した場合は(明らかに非オブジェクトです)を返します。それがあなたの問題です。クエリにエラーがあります。

PDOでエラーモードを設定することをお勧めします。

$db->setAttribute(PDO::ATTR_ERRMODE, PDO:ERRMODE_EXCEPTION);

次に、エラーをキャッチして、クエリの何が問題になっているのかを確認します。

存在するさまざまなエラーモードは、、PDO::ERRMODE_SILENTおよびPDO::ERRMODE_WARNINGですPDO:ERRMODE_EXCEPTIONそれらについては、 PDOのPHPマニュアルで読むことができます。SQLを作成するときにデバッグする方法を知ることは重要であり、この種の質問をする必要がないための鍵です。

あなたの他の問題について

使用する場合は、id列を選択する必要があります。

SELECT * FROM articles

また

SELECT id, title FROM articles
于 2012-08-25T22:41:11.047 に答える
2

それ以外の:

$query = $db->query("SELECT articles . title FROM articles");

試す:

$query = $db->query("SELECT title FROM articles");

編集

試す:

while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
    echo $row['title'];
}
于 2012-08-25T22:44:22.800 に答える
0

このエラーは、ほとんどの場合、クエリが期待どおりに機能しなかったことを意味します。その結果、$ queryはnull(またはfalse?)であり、クエリ結果オブジェクトではありません。エコーdb->errorinfo()してみて、何が悪かったのかを教えてくれるかどうかを確認してください。

クエリのテキストをmysqlに直接貼り付けて、結果を確認することもできます。それが正しく機能しているように見える場合は、データベース接続コードに問題がある可能性があります。

于 2012-08-25T22:43:47.207 に答える