1

我将 postgreSQL 9.1 与 postGIS 2.0 一起使用。还有 Apache 2.2.22 和 PHP 5.3.13。我正在尝试为 postgreSQL 设置 PHP 的 PDO。我也使用 Windows 7。据此我没问题,我检查了我的 php.ini 并找到了这一extension=php_pgsql.dll

但是根据这个(运行时配置)我必须在我的 php.ini 中设置一个 dsn。我实际上并没有得到我必须做的事情。以及为什么。我尝试pdo.dsn.'pgsql:host=localhost;port=5432'在 php.ini 中编写类似的内容,然后重新启动 Apache。

之后我创建了一个新的 php 文件来测试 PDO。这是代码

    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");  

IE

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

检查这些步骤中的每一个,并再次询问如果其中一个步骤失败并且您无法弄清楚该步骤时如何解决。

于 2013-04-23T22:10:48.803 回答