diff --git a/packages/database/src/Config/DatabaseDialect.php b/packages/database/src/Config/DatabaseDialect.php index 157755b13c..0305bd14dc 100644 --- a/packages/database/src/Config/DatabaseDialect.php +++ b/packages/database/src/Config/DatabaseDialect.php @@ -24,8 +24,8 @@ public function tableNotFoundCode(): string public function quoteIdentifier(string $identifier): string { return match ($this) { - self::MYSQL, self::SQLITE => sprintf('`%s`', $identifier), - self::POSTGRESQL => sprintf('"%s"', $identifier), + self::MYSQL, self::SQLITE => sprintf('`%s`', str_replace('`', '``', $identifier)), + self::POSTGRESQL => sprintf('"%s"', str_replace('"', '""', $identifier)), }; } diff --git a/packages/database/tests/Config/DatabaseDialectTest.php b/packages/database/tests/Config/DatabaseDialectTest.php new file mode 100644 index 0000000000..575327589e --- /dev/null +++ b/packages/database/tests/Config/DatabaseDialectTest.php @@ -0,0 +1,28 @@ +assertSame($expected, $dialect->quoteIdentifier($identifier)); + } +}