1

postGIS 2.0 で postgreSQL 9.1 を使用しています。Apache 2.2.22 と PHP 5.3.13 も使用しています。PostgreSQL 用に PHP の PDO を設定しようとしています。私はWindows 7も使用しています。これによると、私は大丈夫です。php.iniをチェックしたところ、この行が見つかりましたextension=php_pgsql.dll

しかし、これ(ランタイム構成) によれば、php.ini に dsn を設定する必要があります。私は実際に私がしなければならないことを理解していません。なぜ。、のようなものを php.ini に書き込もうとしてpdo.dsn.'pgsql:host=localhost;port=5432'、Apache を再起動しました。

その後、PDO をテストするための新しい php ファイルを作成しました。これがコードです

    try {  
      $DBH = new PDO("pgsql:host=localhost;port=0000;dbname=blah;user=blah;password=blah");  
      $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );  

    }  
    catch(PDOException $e) {  
    echo" sorry man! ";
        echo $e->getMessage();  
    } 
$name="frouto";
$STH = $DBH -> prepare("SELECT * FROM controller WHERE c_name LIKE :name;");
$STH->bindParam(':name', $name);

$STH->execute();
$result = $STH->fetchAll(PDO::FETCH_ASSOC);

PDOをテストするのは本当に簡単です。これはまったく機能しません。例外エラーも出力されません。ランタイム構成が間違っていると思います。また、dsnも間違っています。それらを修正するにはどうすればよいですか?

4

1 に答える 1

1

まず、ローカルホストで postgres が実行されていることを確認します。

次に、postgres に接続できることを確認します: telnet localhost 5432

第三に、Postgres は通常、ポート 5432 で実行されます。コードは 0000 に接続しています。

DSN は、PDO 作成の (唯一の) 引数です。

$DBH = new PDO("pgsql:host=localhost;port=0000;dbname=blah;user=blah;password=blah");  

すなわち

$dsn = "pgsql:host=localhost;port=0000;dbname=blah;user=blah;password=blah";
$DBH = new PDO($dsn);  

これらの各手順を確認し、そのうちの 1 つが失敗し、その手順を理解できない場合は、解決方法をもう一度尋ねてください。

于 2013-04-23T22:10:48.803 に答える