1

そのため、Mapper クラスのコンストラクターでデータベースを作成しようとすると、常に pdo 例外が発生します。この行で:

$this->db = new PDO($dsn, $db_config['username'], $db_config['password']);

これは私の dsn の作成です:

    $db_config = array(
    'driver' => 'pgsql',
    'username' => $dbUser,
    'password' => $dbPassword,
    'schema' => 'r0628740',
    'dsn' => array(
        'host' => 'gegevensbanken.khleuven.be',
        'dbname' => '2TX31',
        'port' => '51314',
    )
);

そして最後に私のコンストラクタ:

public function __construct(){
        global $db_config;
        $dsn = $db_config['driver'] . ':';
        foreach($db_config['dsn'] as $key => $value){
            $dsn .= $key . '=' . $value . ';';
        }
        try{

            $this->db = new PDO($dsn, $db_config['username'], $db_config['password']);
            $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

            if(($db_config['driver'] == 'pgsql') && isset($db_config['schema'])){
                $this->db->query(sprintf("SET SEARCH_PATH TO %s"), $db_config['schema']);
            }
        }catch (PDOException $e){
            var_dump($e->getLine());
            error_log($e->getMessage());
        }

    }
4

3 に答える 3

2

PHP には、pgsql および pgsql_pdo ドライバー libpq.dll に必要な dll が含まれています... PHP バイナリ パスをシステム パスに追加するか、DLL を Windows\system32 にコピーします。Linux では、依存関係が自動的にインストールされます。

于 2013-11-07T14:11:37.917 に答える
1

どこかで記事を見つけました。PostgreSQL がインストールされていて、WAMP が にインストールされていると仮定するとc:\wamp、以下をコピーする必要があります。

c:\wamp\bin\php\php5.3.9\libpq.dllc:\wamp\bin\apache\Apache2.2.11\bin

次のファイルがあることも確認してください。

C:\wamp\bin\php\php5.3.9\ext\php_pdo_pgsql.dllC:\wamp\bin\php\php5.3.9\ext\php_pgsql.dll

また、上記の 2 つのファイルが拡張機能として有効になっていることを確認してください (タスクバーの WAMP アイコンをクリックしPHP > PHP extensions、上記の 2 つを見つけて「チェック」してください)。

私の特定の PHP と Apache のバージョンを参照してphp5.3.9ください。Apache2.2.11

インストールに合わせてこれらを調整します。

于 2014-11-18T04:54:39.777 に答える