2012-04-17 2 views
0

致命的なエラー:/home/content/69/9179269/html/test/json-events.php 11行目の非オブジェクトのメンバ関数fetchAll()を呼び出します。フェッチ後にエンコードjsonを実行しているときにエラーが発生しました

$result = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);

このエラーの原因を教えてください。

`$username = "user"; 
$password = "psword"; 

$dbh = new PDO("mysql:localhost;dbname=databasename", $username, $password); 

$sql = "SELECT `id`, `title`, `time`, `start`, `end`, `url`, `backgroundColor`, `textColor`, `borderColor`, `description` 
    FROM calender WHERE length(column) > 0";` 


foreach ($result as $row){ 
$return[]=array('id'=>$row['id'], 
       'title'=>$row['title'], 
       'start'=>$row['start'].' '.$row['time'], 
       'end'=>$row['end'], 
       'url'=>$row['url'], 
       'backgroundColor'=>$row['backgroundColor'], 
       'textColor'=>$row['textColor'], 
       'borderColor'=>$row['borderColor'], 
       'description'=>$row['description'], 
       "allDay" => false); 
} 
$dbh = null; 

header('Content-type: application/json'); 
echo json_encode($return); 
+0

別々の$ SQLをエコーし​​、phpMyAdminのかMySQLのコマンドラインを通してそれを実行してみてください。 $ dbh-> query()はfalseを返すので、fetchAllは失敗します。 http://www.php.net/manual/en/pdo.query.phpを参照してください。PDO :: query()はPDOStatementオブジェクトを返します。失敗した場合はFALSEを返します。 –

+0

もっとコードを表示する必要があります。 –

+0

すべてのPHPコードを更新しました。 –

答えて

1

query()はpdoステートメントを返していません。つまり、クエリが失敗した可能性があります。 SQL文とエラーメッセージを確認してください。あなたはあなたのエラーメッセージを見ることができます

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

でエラー報告の

電源を入れます。

+0

'カラム'を追加すると動作しました。 –

関連する問題