Bug #21261
string literals quoted as identifiers in class.t3lib_loaddbgroup.php
| Status: | Closed | Start date: | 2009-10-13 | |
|---|---|---|---|---|
| Priority: | Should have | Due date: | ||
| Assignee: | Xavier Perseguers | % Done: | 0% |
|
| Category: | dbal | |||
| Target version: | - | |||
| TYPO3 Version: | Complexity: | |||
| PHP Version: | ||||
| Votes: | 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)
Related issues
| related to Core - Bug #20432: DB check breaks with MySQL in ANSI mode due to double quotes | Closed | 2009-05-15 |
History
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.
Updated by Xavier Perseguers over 3 years ago
Committed to TYPO3 Core:
- trunk (rev. 6927)
- 4-3 (rev. 6928)
- 4-2 (rev. 6929)