Если вы знаете, что вашему dn требуется пароль, вы можете проверить, что он не равен нулю, прежде чем пытаться создать PDO-объект. Или просто используйте try / catch в этом отношении, как в этом примере с php.net / PDO
<?php
/* Connect to an ODBC database using driver invocation */
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?>