dポイントプレゼントキャンペーン実施中!

xamppにpearをインストールし、テキストを見ながらプログラムを作成し、実行しましたが、とエラーになります。
エラーの画面は以下のとおりです。

接続に成功しました
Fatal error: Call to a member function getOne() on a non-object in C:\Program Files\xampp\htdocs\pje_bulletin\bbs.php on line 15

これに対するプログラムは以下のようなものです。
【bbs.php】
<?php
require_once("Init_class.php");
$init_obj = new Init_class();
$in_disp_from = $_GET["in_disp_from"];
if(!$in_disp_from = intval($in_disp_from)){
$in_disp_from = 0;
}
$in_disp_to = $in_disp_from + 10;
$sql = "SELECT (*) FROM bbs_table";
$count_result = $init_obj->db_object->getOne($sql); ←ここがline 15

$sql="SELECT message_sequence,contributor,mai_address,home_page_uri,subject,message,pass,_word,write_date FROM bbs_table ORDER BY message_sequence DESC LIMIT ".$in_disp_from.", "."10";
$db_result = $init_obj->db_object->query($sql);
disp_html_header($init_obj->bbs_name);
?>
以下続く

【Init_class.php】
<?php
/* PEAR::DBを読み込む */
require_once("../../php/PEAR/DB.php");
require_once("html_disp.php");

/* メンバ変数 */
class Init_class{
var $db_object;
var $decode_key = "abcdefg";
var $db_user = "root";
var $db_pass = "";
var $db_host ="localhost";
var $db_name ="keroro";
var $bbs_name = "まっちゃんの掲示板";
}

/* コンストラクタ → DBへの接続 */
function Init_class(){
$db_string = "mysql://".$this->db_user.":".$this->db_pass."@".$this->db_host."/".$this->db_name;
$this->db_object = DB::connect($db_string);
}
print("接続に成功しました");
以下続く


●pearを使わないで、PHPから直接MySQLにつながります。
●SQLも簡単なヤツですし、コマンドラインからも問題ありませんでした。
●一旦は接続できているようなのですが、次のrowをカウントに行くところでつまづいています。

PEARがちゃんとインストールされていないのかと思いましたが、
コマンドで「pear list」とやると、

DB    1.7.13    stable

なっており、このほかに70個ぐらいのモジュールというかパッケージがセットされているようです。

それと、php.iniのinclude pathもちゃんと設定されています。

どなたかご指導下さい。
よろしくお願いします。

「pearがエラーになる」の質問画像

A 回答 (1件)

おそらくDBのオープンに失敗しているんじゃないでしょうか。


$this->db_object = DB::connect($db_string);
の結果がエラーになってないかどうか、その後に
---
if( DB::isError( $this->db_object ) ) {
print "接続に失敗しました";
}
---
といったチェックを行ってみてください。
(それ以外の、db_object->getOne や、 db_object->query しているところも、結果のエラーチェックはしておいた方が良いでしょう)
あと、PEAR::DB は古いライブラリです。今から新規にプログラムを作るのなら、PEAR::MDB2を使うことをオススメします。
http://itpro.nikkeibp.co.jp/article/COLUMN/20070 …
http://project-p.jp/halt/anubis/blog_show/524
    • good
    • 0
この回答へのお礼

mtaka2さん、回答ありがとうございました。
週明けからいきなり出張になってしまい、返信が送れてしまいました。
ゴメンナサイ。

結果からいいますと、やはりご指摘のように、ちゃんとDBがつながっていませんでした。
メンドクサイですけど、ひとつずつチェックをしなければいけないことがわかりました。

本当にありがとうございました。

お礼日時:2009/11/06 09:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!