Php 如何连接到名称中带有分号的数据库?

Php 如何连接到名称中带有分号的数据库?,php,pdo,Php,Pdo,我有一个名称中有分号的数据库,例如a;a。我无法重命名数据库。在SQL中,我会使用反勾号来转义名称,但在PDO DSN中如何才能做到这一点 $db = 'a;a'; $dsn = "mysql:host=localhost;dbname=$db;charset=utf8mb4"; $options = [ \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, \PDO::ATTR_EMULATE_PREPARES => fals

我有一个名称中有分号的数据库,例如
a;a
。我无法重命名数据库。在SQL中,我会使用反勾号来转义名称,但在PDO DSN中如何才能做到这一点

$db = 'a;a';
$dsn = "mysql:host=localhost;dbname=$db;charset=utf8mb4";
$options = [
    \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_EMULATE_PREPARES => false,
];
try {
    $pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
    throw new \PDOException($e->getMessage(), (int) $e->getCode());
}
自<代码>在DSN中用作分隔符,PDO认为我的数据库名为
a
,我得到以下错误:

致命错误:未捕获的PDO异常:SQLSTATE[HY000][1049]未知数据库“a”


我用双分号解决了这个问题

$db = 'a;;a'; // <-- means the database is called `a;a`
$dsn = "mysql:host=localhost;dbname=$db;charset=utf8mb4";

$db='a;;a’;//为什么数据库名称中有分号?