Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

I'm using POST method to insert some data to db on my server.This is my connection.php file that is stored in my http://www.url.com/public_html.

    <?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";

?>

This is insert.php file also stored in http://www.url.com/public_html that I use to insert data in database.

<?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);
}
?>

I use postman, and my Android app to test this but I'm getting: Connection failed: php_network_getaddresses: getaddrinfo failed: Name or service not known error.

like image 813
Ivan Bošnjaković Avatar asked Dec 14 '15 12:12

Ivan Bošnjaković


3 Answers

My database is on the same machine so I just needed to edit:

$servername = "localhost"

Now everything is working just fine.

like image 69
Ivan Bošnjaković Avatar answered Sep 25 '22 16:09

Ivan Bošnjaković


The value you've specified for $servername is not a host name but rather a URL, or resource name. The host name would be just www.url.com.

Of course, as you've already discovered, localhost is the correct host name if the client and server reside on the same box.

like image 27
Darwin von Corax Avatar answered Sep 21 '22 16:09

Darwin von Corax


For people coming from Google: If you work with Docker, you might use the name of the database docker container here, like

$dbserver='mydockerbox-mysql';

if your docker-compose.yml looks like this:

services:
  mydockerbox-mysql:
    image: mysql:5.7.26
    container_name: mydockerbox-mysql
like image 21
Sliq Avatar answered Sep 22 '22 16:09

Sliq