sql >> Database >  >> RDS >> Mysql

BOB-waarschuwingen onderdrukken

Het enige dat ik hier kan zien, is dat je PDO vertelt om uitzonderingen na . te gooien u hebt geprobeerd de verbinding te openen. Dat is waarschijnlijk te laat.

Wat je in plaats daarvan zou kunnen doen, is die optie rechtstreeks naar de constructor sturen met behulp van de 4e parameter:

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

Dat zal waarschijnlijk je probleem oplossen.

Bewerken: Als de hostnaam door de gebruiker is opgegeven, kunt u deze valideren voordat u deze naar de PDO-constructor stuurt.

Gebruik bijvoorbeeld:

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

Dat werkt voor domeinnamen, localhost en ip-adressen.




  1. Libmysqlclient gebruiken in een toepassing met meerdere threads

  2. Een label gebruiken in een hebbende clausule in sqlachemy

  3. postgresql genereert een reeks zonder tussenruimte

  4. Opgeslagen procedure met optionele WHERE-parameters