Mysql
 sql >> Database >  >> RDS >> Mysql

Soppressione degli avvisi PDO

L'unica cosa che posso vedere qui è che dici a PDO di generare eccezioni dopo hai provato ad aprire la connessione. Molto probabilmente è troppo tardi.

Quello che potresti fare invece, è inviare quell'opzione al costruttore direttamente usando il 4° parametro:

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) {
...

Questo probabilmente risolverà il tuo problema.

Modifica: Se il nome host è fornito dall'utente, è possibile convalidarlo prima di inviarlo al costruttore PDO.

Ad esempio utilizzando:

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

Funzionerà per i nomi di dominio, localhost e indirizzi IP.