MDB2によるデータベースアクセスができない

このQ&Aのポイント
  • MDB2を使用したデータベースアクセスがうまくいきません。
  • DBクラスを使用したデータベースアクセスは成功しましたが、MDB2を使用したデータベースアクセスは失敗します。
  • どの部分が問題なのか特定できません。
回答を見る
  • ベストアンサー

MDB2によるデータベースアクセス

ができません。 次のものは動きました。 <?php require_once("DB.php"); $db=DB::connect("pgsql://gomiuser@localhost/gomidatabase"); $db->disconnect(); ?> が以下が動きません。 <?php require_once 'MDB2.php'; $mdb2=&MDB2::connect(pgsql://gomiuser@localhost/gomidatabase); if(PEAR::isError($mdb2)) { die($mdb2->getMessage()); } $mdb2->disconnect(); ?> Don't Find(出力) 何が悪いのでしょうか?

  • reiman
  • お礼率73% (794/1076)
  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

どういうエラーが発生しているかわからないので何とも言えません。 http://pear.php.net/package/MDB2_Driver_pgsql/ 「/MDB2/Driver/」配下にドライバは入ってますか? パスワードをちゃんと設定してみるとどうなりますか?

reiman
質問者

お礼

ありがとうございます。 <?php require_once 'MDB2.php'; $mdb2=&MDB2::connect('pgsql://gomiuser@localhost/gomidatabase'); if(PEAR::isError($mdb2)) { die($mdb2->getMessage()); } $mdb2->disconnect(); ?> 質問では「’」が抜けていましたが単なる写し間違いで実際には「’」はつけています。 解決しました。 pear install MDB2#pgsql をしなければならに見たいです。 これをしてアパッチを再起動すると動きました。 アパッチの再起動は必要かどうかは確認していません。 [root@prime-am ~]# pear install MDB2#pgsql WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update Skipping package "pear/MDB2", already installed as version 2.4.1 downloading MDB2_Driver_pgsql-1.4.1.tgz ... Starting to download MDB2_Driver_pgsql-1.4.1.tgz (33,839 bytes) .........done: 33,839 bytes install ok: channel://pear.php.net/MDB2_Driver_pgsql-1.4.1

関連するQ&A

  • PEAR MDB2 がうまく設置できません。

    require_once( PATH_PEAR . '/MDB2.php'); global $mdb2; $mdb2 =& MDB2::connect('pgsql://hogehoge:hogehoge@localhost/hogehoge'); // 接続が失敗したとき if( MDB2::isError($mdb2) ) { echo "データベースに接続できません。処理を中止します。<br />\n"; echo 'Standard Message: ' . $mdb2->getMessage() . "<br />\n"; echo 'Standard Code: ' . $mdb2->getCode() . "<br />\n"; echo 'DBMS/User Message: ' . $mdb2->getUserInfo() . "<br />\n"; echo 'DBMS/Debug Message: ' . $mdb2->getDebugInfo() . "<br />\n"; exit; } else { return true; } 上記を実行したところ下記の結果が返ってくるのですが、原因が不明です。誰か教えて貰えないでしょうか。 PHPは5.2.5に変更し、PEAR.phpも入れました…。 データベースに接続できません。処理を中止します。 Standard Message: MDB2 Error: connect failed Standard Code: -24 DBMS/User Message: _doConnect: [Error message: unable to establish a connection] ** pgsql(pgsql)://hogehoge:xxx@localhost/hogehoge DBMS/Debug Message: _doConnect: [Error message: unable to establish a connection] ** pgsql(pgsql)://hogehoge:xxx@localhost/hogehoge

    • 締切済み
    • PHP
  • MDB2 [Call to undefined method MDB2

    MDB2 [Call to undefined method MDB2_Error::execute()] 以下のようなMDB2を利用したSELECT文を書きましたが、 最終行で、 Call to undefined method MDB2_Error::execute() が出ます。 どのように修正すれば良いでしょうか? ===================================================================================== require_once('/usr/share/pear/PEAR/MDB2.php'); $db=MDB2::connect('mysqli://【user】:【password】@localhost/【dbname】?charset=utf8'); if(PEAR::isError($db)){ die($db->getMessage()); } $sql = 'select * from user where name=? and password=?'; $types = array('text','text'); $stmt=$db->prepare($sql, $type, TRUE); $data = array('guest' , 'guest'); $res = $stmt->execute($data); ===================================================================================== 下から3行目の$stmtがMDB2_Errorオブジェクトなのまでは分かるのですが、 どう対処すればよいかが不明です。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • phpとデータベース

    書籍のサンプルを実行しても表示されません pearのインストールが怪しいですが、どこを直せばいいかわかりません。 ご教授お願いいたします。 <HTML> <HEAD> <TITLE>PHPのテスト</TITLE> </HEAD> <BODY> <?php require_once("DB.php"); $dbUser = "sample"; // ユーザー名 $dbPass = "password"; // パスワード $dbHost = "localhost"; // ホスト名 $dbName = "sampledb"; // データベース名 $dbType = "mysql"; // データベースの種類 // MySQL="mysql", PostgreSQL="pgsql", MS SQL-Server="mssql", ODBC="odbc" などを設定 // 接続文字列の作成 $dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName"; // データベースに接続 $conn = DB::connect($dsn); // 接続に失敗したらメッセージを表示して終了します。 if (DB::isError($conn)){ die($conn->getMessage()); } print('接続に成功しました。'); // データベースから切断します。 $conn->disconnect(); ?> </BODY> </HTML>

  • PEAR::DBでのMySQL接続

    初心者で、環境が分からなくて困っています。 環境は、OS:Win2000 , PHP-V5.2.4 , MySQL-V5.0.45 , PEAR::DB -V1.7.13 です。 MySQLと、PEAR::DBをインストールして、CONNECTするPGを実行したところ、CONNECTエラーとなりました。 1.PHPソース require_once("DB.php"); $dsn="mysqli://pearusr:pearpass@localhost/pear"; $option=array( "autofree"=> TRUE, "debug"=>3, "portability"=> DB_PORTABILITY_ALL); $db=DB::connect($dsn,$option); if(DB::isError($db)){ die("接続失敗:".$db->getMessage().$db->getCode().$db->getDebuginfo()); } print("データベースへの接続に成功しました。"); $db->disconnect(); 2.エラーメッセージ 接続失敗:DB Error: connect failed-24 [nativecode=Can't connect to MySQL server on 'localhost' (10061)] ** mysqli://pearusr:pearpass@localhost/pear MySQL側の環境について、他QAでいろいろ教えていただき、ちゃんと起動できていそうです。 そうすると、次に疑うのは、PEAR::DBの環境がおかしいのではないか? という想像のもと、PEAR::DBの環境設定まわりで、確認すべき項目を教えていただけませんか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • FC4でmysqlを使用して PEAR DB への接続ができない

    FC4に、yumでPHP5.0.4、php-pear-5.0.4、php-mysql-5.0.4、(mysql-4.1.20,mysql-server-4.1.20)をインストールしました。 <?php $con = mysql_connect("localhost","taro","password") or die("接続出来ません"); print "接続しました"; mysql_close($con); ?> を実行すると、「接続しました」と出ます。ところが、 <HTML> <HEAD><TITLE>PHP test</TITLE></HEAD> <BODY> <?php require_once("DB.php"); $dbUser="taro"; $dbPass="password"; $dbHost="localhost"; $dbName="testdb"; $dbType="mysql"; $dsn="$dbType://$dbUser:$dbPass:@$dbHost/$dbName"; $conn = DB::connect($dsn); if(DB::isError($conn)){ die($conn->getMessage()); } print ('DBに接続しました'); $conn->disconnect(); ?> </BODY></HTML> を実行すると、DB Error: connect failed と出て、接続できません。 php.iniは、 include_path = ".:/usr/share/pear:/php/includes" としてあり、 [root@FC4 ~]# ls -l /usr/share/pear/ で調べても drwxr-xr-x 2 root root 4096 5月 27 18:06 DB -rw-r--r-- 1 root root 38937 11月 8 2005 DB.php となっています。 パスの切り方が間違っているでしょうか? どのようにすれば接続できるでしょうか?よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • MDB接続

    PHP、MDB接続時に下記のようなエラーメッセージが出力されるのですが、原因が今一つ掴めません・・・。 Fatal error: Call to undefined function: query() in /home/h041117455-1087/www/test/yoyaku/studio.php on line 27 プログラムの方では、 <? require_once("MDB.php"); global $db; /********************************* * DB接続 ********************************/ $dsn = "pgsql://nobody:@localhost/yoyaku"; // データベースへ接続 $db = MDB::connect($dsn); if (MDB::isError($err)) { echo "接続NG" . $err; } else { echo "接続OK"; // Ast、Bst予約確認 $sql = "select YOYAKU_CODE from T_YOYAKU where YOYAKU_ID = '" . $l . "'"; $result = $db->query($sql); } と記述しております。 $result = $db->query($sql); の部分でエラーが発生しているのはわかるのですが、原因がつかめません。 申し訳ありませんが、ご教授お願い致します。

    • ベストアンサー
    • PHP
  • PEAR::MB2によるPHP+MySQLについて

    PEAR::MB2でPHP+MySQLを勉強中なのですが、特定カラムの値を取得することができません。 下記のソースコードで、変数$aaaをechoで参照すると空白となってしまいます。 大変恐縮ですがご教授のほどよろしくお願いいたします。 [環境]----------------------------------------------------------- OS: windows7(64bit) PHP: ver5.3.8 MySQL: ver5.5 Pear::MDB2  pear/MDB2 2.5.0b3 2.4.1 database abstraction layer  pear/MDB2_Driver_fbsql 0.2.0 fbsql MDB2 driver  pear/MDB2_Driver_ibase 1.5.0b3 ibase MDB2 driver  pear/MDB2_Driver_mssql 1.5.0b3 mssql MDB2 driver  pear/MDB2_Driver_mysql 1.5.0b3 1.4.1 mysql MDB2 driver  pear/MDB2_Driver_mysqli 1.5.0b3 mysqli MDB2 driver  pear/MDB2_Driver_oci8 1.5.0b3 oci8 MDB2 driver  pear/MDB2_Driver_odbc 0.1.0 ODBC Driver for MDB2  pear/MDB2_Driver_pgsql 1.5.0b3 pgsql MDB2 driver  pear/MDB2_Driver_querysim 0.6.0 querysim MDB2 driver  pear/MDB2_Driver_sqlite 1.5.0b3 sqlite MDB2 driver  pear/MDB2_Driver_sqlsrv 1.5.0b3 sqlsrv MDB2 driver  pear/MDB2_Schema 0.8.5 XML based database schema manager  pear/MDB2_TableBrowser 0.1.2 Database table abstraction library (pear list -allから一部抜粋) [ソースコード]----------------------------------------------------------- require_once("MDB2.php"); $dsn = "mysql://user:pass@localhost/db_name"; $conn = MDB2::connect($dsn); // 接続に失敗したらメッセージを表示して終了 if (MDB2::isError($conn)){ die($conn->getMessage()); } //フェッチモード設定 $conn->setFetchMode(MDB2_FETCHMODE_ASSOC); //SELECT文 $sql = <<<EOS SELECT * FROM db_table WHERE name = 'taro' EOS; //実行 $res = $conn->query($sql); //エラーチェック if (PEAR::isError($res)) { die($res->getMessage()); } //値の取得 $row = $res->fetchRow(); //変数$aaaに、別カラム値(例:miyoji)を格納 $aaa = $row['miyoji']; echo "$aaa"; //←(例)mysqlから田中といった苗字を出力したい。 //クローズ $conn->disconnect(); ----------------------------------------------------------------------- エラー出力はありません。

    • ベストアンサー
    • PHP
  • Apacheで、アクセスさせたくないファイルがある

    PHPで、「データベース接続ファイル」と「main.php」があります。 main.phpからアクセスして、DBの内容を表示するページがあります。 ・DB接続ファイル(database.php) <?php // MDB2 ライブラリの読み込み require_once("MDB2.php"); // エラー発生時の処理 PEAR::setErrorHandling( PEAR_ERROR_CALLBACK, 'handleError' ); function handleError( $error ) { die('エラーが発生しました。管理者までお問い合わせ下さい。'); } // データベースへの接続 $dsn = array( "phptype" => "mysql", "username" => "root", "password" => "", "hostspec" => "localhost", "database" => "test", ); $mdb2 =& MDB2::connect( $dsn, $options ); // 文字コードの指定 $mdb2->setCharset( "utf8" ); ?> ・main.php(DBの内容を表示) require_once("database.php");     ~処理~ 質問: 当然、main.phpからアクセスして、DBの内容を表示します。 アドレスとしては、「http://localhost/main.php」とアクセスするのですが、 「http://localhost/database.php」とアクセスしてもページの遷移が可能です。 この「http://localhost/database.php」にアクセスしソースファイルを見ることが可能で DBへの、接続ユーザー・パスワードがみられてしまうことが問題だと思っています。 この、 「一部ファイルへの直叩き」or「制限」をかけて、直接アクセスできなくなる方法を探しております。 (ただ、別のphpファイルから参照は許しておきたい。main.phpからアクセスできなくなっては意味がないの。) アパッチでどのような設定をすればいいでしょうか。 参考になるページ等をご存知でしたら ご教授お願いします。

    • ベストアンサー
    • PHP
  • データベースに情報が登録されない・・・

    お世話になってます。 現在カゴヤのサーバーでデータベースに情報を登録しようと試みているのですが、登録できません。ぜひみなさんのお力を貸して下さい。phpは初心者なのでわかりやすく教えて頂けると嬉しいです。 ----------------------------------------------------------------- カゴヤPEARインストール済み PHP 5.2.6 Apacheバージョン Apache/1.3.41 MySQLバージョン 5.0.33 ----------------------------------------------------------------- <?php //PEARのDBライブラリを読み込む require_once("DB.php"); // データベースとの接続情報を記述 $dsn = "mysql://ユーザ名:パスワード@localhost/データベース名"; $db = DB::connect($dsn); if(PEAR::isError($dsn)){ print "ConnectError"; exit; } $sql = "INSERT INTO テーブル名 VALUES ('111112222233','1111111111','2222222222','3333333333','4444444444','5555555555','6666666666','7777777777','8888888888','9999999999','1212121212','2323232323','3434343434','4545454545')"; $res = $db->query($sql); $num = $db->affectedRows(); print $num . "rows Update"; ?>

    • ベストアンサー
    • PHP
  • PEAR MDB2 のsetFetchModeが設定がうまくいきません

    お世話になります。 Pearのmdb2を使用し始めたのですが、 setFetchMode(DB_FETCHMODE_ASSOC) の記述をしても、データが連想配列形式になりません。 (数値添え字の配列になってしまいます。) 何か問題として考えられることはありませんでしょうか。 環境は、 CentOS5 apache 2.2.3 php 5.1.6 mysql 5.0.22 (すべてRPM) です。 ソースは下記のとおりです。 $mdb2 =& MDB2::connect( $dsn, array() ); if( PEAR :: isError( $mdb2 ) ){ $errmsg .= "データベースの接続に失敗しました。<br />"; }else{ //連想配列で取り出す $mdb2->setFetchMode(DB_FETCHMODE_ASSOC); $res =& $mdb2->query('SELECT * FROM tablename'); if (PEAR::isError($res)) { $errmsg .= "SQLの実行に失敗しました。<br />"; } print("<pre>"); while ($row = $res->fetchRow()) { print_r($row); } print("</pre>"); // 接続断 $mdb2->disconnect(); } アドバイスがあればぜひよろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう