我是 ubuntu 社区的新手,或者 linux 听起来更好。所以我对存储库和软件包了解不多。因此,我在 ubuntu 20.04 LTS 中安装了 xampp、postgresql 和 pgadmin4。没有任何错误显示,一切都很顺利。我的 php 代码执行正常。当我尝试将数据库连接到我的 php 代码时出现了问题。供您参考,我保留了用于检查数据库是否连接到 php 的简单数据库连接代码。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pg con</title>
</head>
<body>
<?php
echo"something";
$con=pg_connect("host=localhost port=5432 dbname=testdb username=naeem password=naeem");
if(!$con)
{
echo"error while connecting to database";
echo "<br>";
echo pg_last_error($con);
}
else
{
echo "connection to database successfull";
}
?>
</body>
</html>
正如您所看到的,"something"
在连接到浏览器(firefox 和 chrome)上显示的数据库之前,我尝试进行回显,但使用后没有任何内容出现pg_connect()
。
以下是输出的屏幕截图:
答案1
除了检查连接之外,您可能还想扩展 PostgreSQL 连接代码以使用pg_last_error()
。当出现问题时,这将为您提供更多详细信息:
if ( !$con || pg_last_error($con) ) {
print_r("<h3>Error while connecting to database</h3>";
print_r(pg_last_error($con));
} else {
echo "<h3>Connection to database successful.</h3>";
}
关于连接字符串的一点说明:如果您使用的是全系列字符集(而不仅仅是 ASCII),则可能需要包含options='--client_encoding=UTF8'
以确保 PHP 和 PostgreSQL 之间没有编码问题。这将为您提供如下所示的连接字符串:
host=[HOST] port=[PORT] dbname=[NAME] user=[USER] password=[PASS] options='--client_encoding=UTF8'