У меня есть база данных с точкой с запятой в имени, например, a;a
. Я не могу переименовать базу данных. В SQL я бы использовал обратные метки для экранирования имени, но как я могу сделать это в DSN PDO?
$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
, и я получаю эту ошибку:
Неустранимая ошибка: Uncaught PDOException: SQLSTATE [HY000] [1049] Неизвестная база данных 'a'