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 二进制路径添加到系统路径或将 de DLL 复制到 Windows\system32。linux依赖会自动安装。

于 2013-11-07T14:11:37.917 回答
1

我在某处找到了文章,对我有用。假设你已经安装了 PostgreSQL 并且你的 WAMP 安装是 on 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

此外,请确保您已通过 WAMP 菜单启用上述 2 个文件作为扩展名(单击任务栏上的 WAMP 图标:PHP > PHP extensions,找到上述 2 个并“检查”它们)。

请注意php5.3.9Apache2.2.11参考我的特定 PHP 和 Apache 版本。

调整这些以适合您的安装。

于 2014-11-18T04:54:39.777 回答
0

将此libpq.dllc:\wamp\bin\php\php5.3.9\libpq.dll 复制c:\wamp\bin\apache\Apache2.2.11\bin。为我工作

于 2020-09-03T13:27:35.073 回答