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’;//为什么数据库名称中有分号?