sql >> Base de Datos >  >> RDS >> Mysql

Supresión de advertencias de PDO

Lo único que puedo ver aquí es que le dices a PDO que arroje excepciones después ha intentado abrir la conexión. Lo más probable es que sea demasiado tarde.

Lo que podría hacer en su lugar, es enviar esa opción al constructor directamente usando el cuarto parámetro:

try {
  $opts = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
  $db = new PDO($dbms . ':host=' . $dbhost . ';port=' . $dbport . ';dbname=' . $dbname,
                $dbuser, $dbpasswd, $opts);
} catch(PDOException $e) {
...

Eso probablemente resolverá tu problema.

Editar: Si el nombre de host lo proporciona el usuario, puede validarlo antes de enviarlo al constructor de PDO.

Por ejemplo usando:

if (filter_var(gethostbyname($user_provided_host_name), FILTER_VALIDATE_IP)) {
  // valid hostname / ip address
}

Eso funcionará para los nombres de dominio, localhost y direcciones IP.