php - 为什么端口号在 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 似乎不合作。
请帮我弄清楚我可能忽略了什么。
解决方案
变量仅在双引号字符串中展开。
$this->db = new PDO("pgsql:host=$host;dbname=$dbname;user=$user;port=$port;password=$password");
它可能特别抱怨 $port ,因为它试图在尝试建立连接之前将其转换为 int 。如果它会走那么远,它也会抱怨主机名。
推荐阅读
- vue.js - VueX Getter 从数组中过滤唯一 id
- azure - Azure - 将 Web 作业从 ASE 迁移到 Kubernetes (AKS) 的迁移选项
- android - 永久模糊更改位图
- reactjs - ReactJS fetchAPI JSON 类型 - TypeError:content.forEach 不是函数
- css - 为什么在 Vue 组件的样式中添加 lang=less 会改变现有行为?
- memory - JVM 已用内存与实际堆内存差异很大(G1GC)
- azure-devops - VSTS Microsoft 托管代理:虚拟机大小
- ios - iOS 状态栏变色动画
- javascript - 奇怪的javascript行为(将循环分配给变量?)
- ajax - GET http://localhost:8005/context.blade.php 404(未找到)