pdo::__construct(): php_network_getaddresses: getaddrinfo failed: name or service not known in – php mysql pdo

Pregunta:


estoy subiendo mi sitio web al servidor y al momento de loguearme me vota este error.
tengo una pagina conexion en el cual detallo toda la configuracion

define('URL', 'https://www.aynii.pe/');
define('APLICATION', 'aplication/');
define('DB_TYPE', 'mysql');
define('DB_HOST', 'aynii.pe');
define('DB_USER', '');
define('DB_PASSWORD', '');
define('DB_NAME', 'aynii_db');
define('DB_CHARSET', 'utf8');
define('HASH_PASSWORD_KEY', '@nexus and artic fox Systems and Information [email protected]');
define('DEFAULT_CONTROLLER', 'login');

y la recibo en la clase DataBase

public function __construct($DB_TYPE,$DB_HOST,$DB_NAME,$DB_USER,$DB_PASS,$OPCIONES)
{
    parent:: __construct($DB_TYPE.':host='.$DB_HOST.';dbname='.$DB_NAME,$DB_USER,$DB_PASS,$OPCIONES);
    parent:: setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}

no logro encontrar el error ya que hay momentos en que me sale el error y otros en que ingresa normal

Preguntado por: Fernando Abel Gonzales Ch

A. Cedano

No sé a qué se debe que tu clase tenga un constructor que invoca a otro constructor.

Si quieres implementar una clase utilitaria para manejar tus conexiones, simplemente puedes hacerla que extienda de PDO y usar el constructor de PDO para crear la instancia de la conexión.

Por seguridad, las credenciales de conexión no deberían existir definidas en constantes no importa donde. Conviene que sean miembros privados de la clase, o, para más seguridad, guardarlas en un archivo de configuración que esté protegido e incluso aislado para otros usuarios con menos privilegios.

Veamos un ejemplo donde las credenciales de conexión existen como miembros de la clase.

Propondría una clase parecida a esta:

<?php

class DataBase extends PDO
{
    private $pdo;
    private $dbtype="mysql";
    private $host="localhost";  //El host suele ser este, no el nombre de dominio
    private $dbname="aynii_db";
    private $dbcharset="utf8";
    private $usr="";
    private $pwd="";

    public function __construct()
    {
        $this->Connect();

    }

    private function Connect()
    {
        $host=$this->host;
        $dsn = $this->dbtype.":host=".$this->host.";dbname=".$this->dbname.";charset=".$this->dbcharset;
        $arrOptions = array(
            PDO::ATTR_EMULATE_PREPARES => FALSE,
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
        );

        try 
        {
            $this->pdo = new PDO($dsn, $this->usr, $this->pwd, $arrOptions);
        }
        catch (PDOException $e) 
        {
            error_log($this->error = $e->getMessage(),0);
        }
    }
}

?>

Aquí pasamos todas las opciones en el constructor mediante $arrOptions, de ese modo evitamos seguir manejando el objeto una vez creado. Además incluimos la opción ATTR_EMULATE_PREPARES en FALSE para impedir preparaciones emuladas que pueden ser explotadas por usuarios mal intenciones para intentar emular consultas preparadas e inyectar código malicioso.

Modo de uso

La clase se usaría así simplemente:

$db=new Database();

Y ya tendrías un $db una instancia de la conexión, sin tener que estar haciendo trasiego de credenciales.

Fuente

Related Posts:

array push con keys php – php array
Pregunta: Buen día. Estoy tratando de crear un array con valores agrupados por categorías, mediante AJAX recibo dos variables una contiene un string con el nombre ...
Actualizar información con ajax php mysql – php jquery mysql
Pregunta: Tengo esta simple consulta que lo que simplemente me muestra las visitas de la web, pero quisiera que fuera automático con ajax ya que ...
¿Cómo insertar código en las entradas de WordPress? – php wordpress plugin
Pregunta: En algunos blogs de programación he visto algo como esto en las entradas: Me gustaría poder hacer lo mismo. Sin embargo, no solo quiero que ...
Como validar array checkbox – javascript php jquery
Pregunta: Que tal buen dia, alguien me podria decir como se puede hacer para que cuando presione el boton "BAJAR DATOS" si este esta vacio ...
Problema con UTF_8 – php sql sql-server
Pregunta: Buen día, mi problema es el siguiente, Php me lanza el siguiente Warning Warning: utf8_decode() expects parameter 1 to be string, object given ...
Obtener las fechas de los días Lunes dependiendo de un rango de fechas PHP – php datetime time
Pregunta: Dependiendo de un rango de fechas quiero obtener sólo las fechas de los días Lunes, tengo la siguiente función que funciona pero me trae ...
Hacer update a registros de mensajes para marcarlos como leido – mysql
Pregunta: Tengo este proceso almacenado, necesito hacer varios update para marcar como leidos los mensajes. El problema es que solo se hace 1 update y ...
Customizar rutas de Login en Laravel 5.3 – php laravel laravel-5
Pregunta: Hola tengo un problema con el enrutado de Login con el metodo php artisan make:auth que te genera todo lo que se necesita Desde vamos ...
¿Location manager Android? Experiencias – android mysql android-studio
Pregunta: He desarrollado una aplicación Gps que envía información a Mysql cada 10 seg atraves de locationmanager. ¿Según su experiencia hasta cuanto es posible disminuir ...
¿Cómo utilizar `count` para contabilizar la cantidad de registros para distintos valores de un campo en mysql? – php mysql sql
Pregunta: Resulta que tengo un campo llamado ESTADO en mi tabla. En este campo hay varias estados de pedido que son: LOGÍSTICA, PACKING, PICKING, CARTERA, ...
Insertar en una tabla registros basados en el resultado de una consulta – mysql sql
Pregunta: Estoy intentando que insertar una fila nueva con unos datos por cada valor que de un SELECT. Os dejo la última query que se me ...
Precargar SOAP en PHP – php webservice soap
Pregunta: Estoy usando un webservice en el cual realizo la conexión por SOAP en PHP. El problema viene cuando en la primera llamada, a veces, no ...
Xampp no carga proyecto laravel – php laravel apache
Pregunta: Tengo el proyecto laravel en un mac con OSX el capitán con php artisan. El proyecto se ejecuta sin problema, pero por motivos personales ...
URLs absolutas con PHP – php pretty-urls
Pregunta: Explico mi problema, es sencillo, lo tengo solucionado, pero solamente de manera local, no me sirve lo que hice si yo uso esto en ...
¿Como usar una sentencia Case en Mysql? – mysql sql
Pregunta: Tengo dos tablas una es la de detalle de producto y la otra es la de producto, el problema radica en que yo quiero ...
Tags:, ,

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *