Vân*_*âne 3 php sql database pdo synology
我正在制作一个托管在我的 Synology NAS 上的建设中页面。
访问者可以使用他们的电子邮件订阅,并在网站可用时获得通知。
我在将电子邮件添加到数据库的数据库和 PHP 代码方面遇到问题。
如果服务器名称为localhost,则会出现以下错误:
SQLSTATE[HY000] [2002] 没有那个文件或目录
当它是127.0.0.1或 时127.0.0.1:3306,我收到以下错误:
SQLSTATE[HY000] [2002] 连接被拒绝
我还没有在 Stackoverflow 上找到解决方案。
这里的PHP代码:
<?php
$servername = "localhost";
$username = "id";
$password = "password";
$dbname = "dbname";
try {
$conn = new PDO( "mysql:host=$servername;dbname=$dbname", $username, $password );
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$sql = "INSERT INTO email ( email ) VALUES ( '$email' )";
$conn->exec( $sql );
echo "New record created successfully";
}
catch( PDOException $e )
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
Run Code Online (Sandbox Code Playgroud)
为什么我收到这个错误?
小智 5
我有同样的问题:
SQLSTATE[HY000] [2002] Connection refused
Run Code Online (Sandbox Code Playgroud)
尝试从 php 连接到在我的 Synology NAS 上运行的 MariaDB 数据库时。只提供用户名和密码
$conn = new PDO( "mysql:host=$servername;dbname=$dbname", $username, $password );
Run Code Online (Sandbox Code Playgroud)
没有工作,同时指定端口号,在别处找到的解决方案,也没有工作:
$conn = new PDO( "mysql:host=$servername;port=3307;dbname=$dbname", $username, $password );
Run Code Online (Sandbox Code Playgroud)
什么工作(对我来说):
$conn = new PDO("mysql:host=$servername:3307;dbname=$database", $login, $password);
Run Code Online (Sandbox Code Playgroud)
从 Synology NAS 的主菜单打开 MariaDB 10 属性窗口时会找到端口名称。显然,port=3307规范没有任何影响,但也没有给出错误消息。