获取连接失败:php_network_getaddresses:getaddrinfo 失败:名称或服务未知

Getting connection failed: php_network_getaddresses: getaddrinfo failed: Name or service not known

我正在使用 POST 方法向数据库中插入一些数据 server.This 是存储在 http://www.url.com/public_html.[=15 中的 connection.php 文件=]

    <?php

$servername = "http://www.url.com";
$username = "db_username";
$password = "db_password";
$databaseName = "db_name";

$connect = new mysqli($servername,$username,$password,$databaseName);

if ($connect->connect_error) {
    die("Connection failed: " . $connect->connect_error);
} 
echo "Connected successfully";

?>

这是 insert.php 文件,也存储在 http://www.url.com/public_html 中,我用来在数据库中插入数据。

<?php

if($_SERVER["REQUEST_METHOD"]=="POST"){
    require'connection.php';
    createStudent();
}
function createStudent(){
    
    global $connect;
    
    $name = $_POST["name"];
    $lastname = $_POST["lastname"];
    $age = $_POST["age"];
    
    $query="INSERT INTO  `demo` (  `name` ,  `lastname` ,  `age` ) 
    VALUES ('$name','$lastname','$age')";
    mysqli_query($connect,$query)or die (mysqli_error($connect));
    mysqli_close($connect);
}
?>

我使用 postman 和我的 Android 应用程序对此进行测试,但我得到: 连接失败:php_network_getaddresses:getaddrinfo 失败:名称或服务未知错误。

我的数据库在同一台机器上,所以我只需要编辑:

$servername = "localhost"

现在一切正常。

您为 $servername 指定的值不是主机名,而是 URL 或资源名称。主机名只是 www.url.com.

当然,正如您已经发现的那样,如果客户端和服务器位于同一个盒子上,localhost 是正确的主机名。

在波纹管文件中进行更改 config-db.php

nano  /etc/phpmyadmin/config-db.php 

将数据库服务器更改为本地主机

$dbserver='localhost';

它适合我。

来自Google的人: 如果您使用 Docker,您可以在此处使用数据库 docker 容器的名称,例如

$dbserver='mydockerbox-mysql';

如果您的 docker-compose.yml 看起来像这样:

services:
  mydockerbox-mysql:
    image: mysql:5.7.26
    container_name: mydockerbox-mysql