Problema con conexión a BD externa

publicado por: Anonymous

EDITADO

Estoy teniendo un problema al conectarme con la BD que tengo en 1and1 (el hosting). No habia tenido este problema antes conectandome a otras bases de datos ni el local con el mismo código, y no tengo ni idea de como solucionarlo.

Este es el error:

Error!: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

Y este es el código de la class de sistema donde esta la conexión:

define("DBHOST", "***");
define("DBUSER", "***");
define("DBPWD", "***");
define("DBNAME", "***");


class Sistema {

    protected $db;

    protected $total = 0;

    public function __construct() {

    }

    public function dbconnect() {
        $dbhost = DBHOST;
        $dbuser = DBUSER;
        $dbpwd = DBPWD;
        $dbname = DBNAME;

        $options = array(
            MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"
        );

        try {

        $pdo = new PDO("mysql:host=$dbhost dbname=$dbname;port=3306;", $dbuser, $dbpwd, $options);

        $this->db = $pdo;

        } catch (PDOException $e) {

            echo "Error!: " . $e->getMessage() . "<br/>";
            die();

        }



    }

}

?>

(He quitado lo de usuario y contraseña de la db porque poniendolo sigue sin funcionar, parece un error de código, pero el código me funciona en la BD en localhost.

solución

He conseguido conectarme a la BD Externa cambiando la Class.sistema por este código:

<?php

class Sistema {

    protected $db;

    protected $total = 0;

    public function __construct() {

    }

    public function dbconnect() {

        $host_name = '<host here>';
        $database = '<db here>';
        $user_name = '<username here>';
        $password = '<password here>';

        $options = array(
            MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"
        );

        $pdo = null;
        try {
          $pdo = new PDO("mysql:host=$host_name; dbname=$database;", $user_name, $password, $options);
          $this->db = $pdo;
        } catch (PDOException $e) {
          echo "Error!: " . $e->getMessage() . "<br/>";
          die();
        }



    }

}

?>

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *