1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

pdo_sqlite: identifier quoting with square brakets

This commit is contained in:
Matteo Beccati
2024-05-02 15:24:55 +02:00
parent 01879ec254
commit 3096ffa7ab
2 changed files with 8 additions and 3 deletions

View File

@@ -28,8 +28,8 @@ int pdo_sqlite_scanner(pdo_scanner_t *s)
/*!re2c
BINDCHR = [:][a-zA-Z0-9_]+;
QUESTION = [?];
COMMENTS = ("/*"([^*]+|[*]+[^/*])*[*]*"*/"|"--"[^\r\n]*);
SPECIALS = [:?"'`/-];
COMMENTS = ("/*"([^*]+|[*]+[^/*])*[*]*"*/"|"--".*);
SPECIALS = [:?"'`/[-];
MULTICHAR = ([:]{2,}|[?]{2,});
ANYNOEOF = [\001-\377];
*/
@@ -38,6 +38,7 @@ int pdo_sqlite_scanner(pdo_scanner_t *s)
(["]((["]["])|ANYNOEOF)*["]) { RET(PDO_PARSER_TEXT); }
(['](([']['])|ANYNOEOF)*[']) { RET(PDO_PARSER_TEXT); }
([`](([`][`])|ANYNOEOF)*[`]) { RET(PDO_PARSER_TEXT); }
("["ANYNOEOF*"]") { RET(PDO_PARSER_TEXT); }
MULTICHAR { RET(PDO_PARSER_TEXT); }
BINDCHR { RET(PDO_PARSER_BIND); }
QUESTION { RET(PDO_PARSER_BIND_POS); }

View File

@@ -31,8 +31,10 @@ foreach ($queries as $k => $query) {
// One parameter
$queries = [
"SELECT * FROM {$table} WHERE '1' = ?",
"SELECT * FROM {$table} WHERE \"?\" IN (?, '?')",
"SELECT * FROM {$table} WHERE \"?\" IN (?, \"?\")",
"SELECT * FROM {$table} WHERE `a``?` = ?",
"SELECT * FROM {$table} WHERE \"a`?\" = ?",
"SELECT * FROM {$table} WHERE [a`?] = ?",
];
foreach ($queries as $k => $query) {
@@ -56,3 +58,5 @@ bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)