質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

4回答

27196閲覧

[PHP,SQLite,PDO]Call to a member function fetch() on boolean

sirokuman

総合スコア45

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2015/06/14 13:30

PHPにてPDOでSQLiteに接続しようとしたところ、
Fatal error: Call to a member function fetch() on boolean in C:\xampp\htdocs\post\postsystem.php on line 12
というエラーを吐かれてしまいました。

lang

1<?php 2try { 3 $db = new PDO("sqlite:post.sqlite3"); 4 if($db == null){ 5 print('接続に失敗しました。'); 6 }else{ 7 print('接続に成功しました。'); 8 } 9 10 $sql = 'SELECT title FROM PostList'; 11 $stmt = $db->query($sql); 12 while($result = $stmt->fetch(PDO::FETCH_BOTH)){ 13 print($result['0']); 14 print($result['1']); 15 } 16} catch (PDOException $e) { 17 $err = $db->errorInfo(); 18 die ($err[2]); 19} 20unset($db);

色々と調べてみましたが、似たようなエラーで、
Call to a member function fetch() on a non-object
というものは見つかるのですが、上記のものはヒットしませんでした。
そのため、解決法をお教えいただきたく質問させていただきました。
どうか回答のほど、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

} catch (PDOException $e) {
var_dump($e);
}

こうしておけば、労せずしてこける理由がわかります。

投稿2015/06/14 13:47

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

これは$stmtがfalse(真偽値)になっているためかと思われます。
SQL文の実行に成功しているかどうかを確認してください。

投稿2015/06/15 03:31

orange0190

総合スコア1698

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

私も、同じエラーに遭遇して このページも参考にさせて頂いてたんですが
今しがた解決したんで、もしもご参考になれば...

私の場合は、テーブル名が違ってました
ローカルの物をサーバーにエクスポートした際、テーブル名にあった大文字がすべて小文字になってしまっていて
これに気が付かなくて...この場合は「catch」もされないんでめちゃめちゃ苦労しました^^;

投稿2016/02/03 16:14

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

$stmtがおそらくfalseになっているようで。
真偽値に対してfetchはできませんよというエラーですね。
select文が正しいかチェックする必要がありそうです。

あとPHPって意図的にthrowしないとcatchしてくれなかったと思いますが、最近は進化したんですかね?

投稿2015/07/23 20:45

yu-ri

総合スコア634

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問