[TASK] Remove strlen calls in the DatabaseConnection 77/27077/4
authorTim Lochmueller <tim@fruit-lab.de>
Mon, 27 Jan 2014 19:04:30 +0000 (20:04 +0100)
committerWouter Wolters <typo3@wouterwolters.nl>
Mon, 27 Jan 2014 20:45:10 +0000 (21:45 +0100)
Remove the strlen calls in the DatabaseConnection to avoid many
string length calculations for the small checks in the query
build process. Replace it with a string cast and not identical
operator.

Resolves: #55370
Releases: 6.2
Change-Id: I0c175671ed51ab3034ffae7c0b812a90218e9f58
Reviewed-on: https://review.typo3.org/27077
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
typo3/sysext/core/Classes/Database/DatabaseConnection.php

index f23c109..ef8b96d 100644 (file)
@@ -555,7 +555,7 @@ class DatabaseConnection {
                                }
                        }
                        // Build query
-                       $query = 'UPDATE ' . $table . ' SET ' . implode(',', $fields) . (strlen($where) > 0 ? ' WHERE ' . $where : '');
+                       $query = 'UPDATE ' . $table . ' SET ' . implode(',', $fields) . ((string)$where !== '' ? ' WHERE ' . $where : '');
                        if ($this->debugOutput || $this->store_lastBuiltQuery) {
                                $this->debug_lastBuiltQuery = $query;
                        }
@@ -580,7 +580,7 @@ class DatabaseConnection {
                                $hookObject->DELETEquery_preProcessAction($table, $where, $this);
                        }
                        // Table and fieldnames should be "SQL-injection-safe" when supplied to this function
-                       $query = 'DELETE FROM ' . $table . (strlen($where) > 0 ? ' WHERE ' . $where : '');
+                       $query = 'DELETE FROM ' . $table . ((string)$where !== '' ? ' WHERE ' . $where : '');
                        if ($this->debugOutput || $this->store_lastBuiltQuery) {
                                $this->debug_lastBuiltQuery = $query;
                        }
@@ -608,13 +608,13 @@ class DatabaseConnection {
                }
                // Table and fieldnames should be "SQL-injection-safe" when supplied to this function
                // Build basic query
-               $query = 'SELECT ' . $select_fields . ' FROM ' . $from_table . (strlen($where_clause) > 0 ? ' WHERE ' . $where_clause : '');
+               $query = 'SELECT ' . $select_fields . ' FROM ' . $from_table . ((string)$where_clause !== '' ? ' WHERE ' . $where_clause : '');
                // Group by
-               $query .= strlen($groupBy) > 0 ? ' GROUP BY ' . $groupBy : '';
+               $query .= (string)$groupBy !== '' ? ' GROUP BY ' . $groupBy : '';
                // Order by
-               $query .= strlen($orderBy) > 0 ? ' ORDER BY ' . $orderBy : '';
+               $query .= (string)$orderBy !== '' ? ' ORDER BY ' . $orderBy : '';
                // Group by
-               $query .= strlen($limit) > 0 ? ' LIMIT ' . $limit : '';
+               $query .= (string)$limit !== '' ? ' LIMIT ' . $limit : '';
                // Return query
                if ($this->debugOutput || $this->store_lastBuiltQuery) {
                        $this->debug_lastBuiltQuery = $query;
@@ -634,7 +634,7 @@ class DatabaseConnection {
        public function SELECTsubquery($select_fields, $from_table, $where_clause) {
                // Table and fieldnames should be "SQL-injection-safe" when supplied to this function
                // Build basic query:
-               $query = 'SELECT ' . $select_fields . ' FROM ' . $from_table . (strlen($where_clause) > 0 ? ' WHERE ' . $where_clause : '');
+               $query = 'SELECT ' . $select_fields . ' FROM ' . $from_table . ((string)$where_clause !== '' ? ' WHERE ' . $where_clause : '');
                // Return query
                if ($this->debugOutput || $this->store_lastBuiltQuery) {
                        $this->debug_lastBuiltQuery = $query;