首页 > 解决方案 > 为什么端口号在 Heroku Postgresql 连接中引发错误

问题描述

我有这个 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 似乎不合作。

请帮我弄清楚我可能忽略了什么。

标签: phppostgresqlherokuheroku-postgres

解决方案


变量仅在双引号字符串中展开。

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

它可能特别抱怨 $port ,因为它试图在尝试建立连接之前将其转换为 int 。如果它会走那么远,它也会抱怨主机名。


推荐阅读