为什么端口号在Heroku Postgresql连接中引发错误

时间:2019-03-11 18:27:20

标签: php postgresql heroku heroku-postgres

我有这段PHP代码,应该可以连接到heroku中的PostgreSQL数据库

下面的代码:

function __construct() {

            $host = 'hostname';
            $user = 'username';
            $password = 'password';
            $dbname = 'db_name';
            $port = '5432';

            try{
                $this->db = new PDO('pgsql:host=$host;dbname=$dbname;user=$user;port=$port;password=$password');


            }
            catch (PDOException $e){
                echo 'Connection failed: ' . $e->getMessage();
            }


        }

该连接抛出一个错误,如下所示:

  

连接失败:SQLSTATE [08006] [7]无效的端口号:“ $ port”

为什么我得到的端口号无效?

当我通过heroku cli连接时,一切似乎都还可以,但是php似乎不配合。

请帮助我找出我可能忽略的地方。

1 个答案:

答案 0 :(得分:0)

变量仅用双引号引起来。

$this->db = new PDO("pgsql:host=$host;dbname=$dbname;user=$user;port=$port;password=$password");

它可能会抱怨$ port,这是因为它试图在建立连接之前将那个转换为int。如果可以做到这一点,那么它也会抱怨主机名。