string literals quoted as identifiers in class.t3lib_loaddbgroup.php
|Priority:||Should have||Due date:|
|Assignee:||Xavier Perseguers||% Done:||
When using MySQL ANSI mode, some mm_relations operations will not work because string literals are quoted with double quotes instead of single quotes.
This is producing errors in the DBAL as well, when working with, for instance, an Oracle database.
When deleting a mm_relation a tt_news record (page or other news record) the following SQL is generated by the DBAL for Oracle:
DELETE FROM "tt_news_related_mm" WHERE "uid_local" = 21 AND ("tablenames" = "tt_news" AND "uid_foreign" = 21)
The part "tablenames" = "tt_news" is not correct, because tt_news is seen as an identifier by Oracle, because of the double quotes. For string it must be quoted with single quotes, like
DELETE FROM "tt_news_related_mm" WHERE "uid_local" = 21 AND ("tablenames" = 'tt_news' AND "uid_foreign" = 21)
Substitute the double quotes in class.t3lib_loaddbgroup.php with single quotes.
(issue imported from #M12220)
|related to Core - Bug #20432: DB check breaks with MySQL in ANSI mode due to double quotes||Closed||2009-05-15|
Updated by Xavier Perseguers over 3 years ago
Uploaded v2 with use of official quoting method $GLOBALS['TYPO3_DB']->fullQuoteStr() instead of hard-coding single quotes.