Ivan Bošnjaković
Ivan Bošnjaković

Reputation: 511

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.

Upvotes: 14

Views: 148112

Answers (5)

zsalya
zsalya

Reputation: 454

And to save time for anybody who made the same mistake as me - this is the error one gets if one creates a file of credentials on Windows and copies it to Linux. It is easier to create the file in Linux.

Upvotes: 0

Ivan Bošnjaković
Ivan Bošnjaković

Reputation: 511

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

$servername = "localhost"

Now everything is working just fine.

Upvotes: 23

Sliq
Sliq

Reputation: 16494

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

Upvotes: 2

pavan
pavan

Reputation: 1

Make changes in bellow file config-db.php

nano  /etc/phpmyadmin/config-db.php 

change db server as localhost

$dbserver='localhost';

Its works for me.

Upvotes: 0

Darwin von Corax
Darwin von Corax

Reputation: 5246

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.

Upvotes: 7

Related Questions