Si por alguna extraña razón necesita hacer esto, no use el dbname
parámetro en el dns. En su lugar, utilice el controlador de su base de datos para seleccionarlo por usted:
$dbh->query('use "newdatabase"'); // for mysql.
De esta manera, tiene la opción de encerrar el nombre de la base de datos con "
, para que pueda nombrarlo cualquiera que sea el controlador permite . Para MySQL para este escenario específico es el "
carácter, pero eso no significa que sea diferente para PostgreSQL o Firebase.
Pero este método no es a prueba de balas, solo permite que la biblioteca PDO analice el DSN tan normal como no espera la biblioteca PDO para hacer frente a esta situación inusual, ya que su único propósito es interactuar con tantos controladores como sea posible.
Las asignaciones específicas del controlador no deben participar en PDO, por lo que realmente debe preguntarle al controlador por esto, de esta manera también puede verificar si la consulta no se ejecuta.