Bug #21261
closedstring literals quoted as identifiers in class.t3lib_loaddbgroup.php
0%
Description
Problem:
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.
Example:
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)
Solution:
Substitute the double quotes in class.t3lib_loaddbgroup.php with single quotes.
(issue imported from #M12220)
Files
Updated by Xavier Perseguers almost 15 years ago
Uploaded v2 with use of official quoting method $GLOBALS['TYPO3_DB']->fullQuoteStr() instead of hard-coding single quotes.
Updated by Xavier Perseguers over 14 years ago
Committed to TYPO3 Core:
- trunk (rev. 6927)
- 4-3 (rev. 6928)
- 4-2 (rev. 6929)