diff --git a/typo3/sysext/backend/Classes/Utility/BackendUtility.php b/typo3/sysext/backend/Classes/Utility/BackendUtility.php
index 4cc6f5635d82e93a79eabadb44cb9edaef014f3f..a49bbbeb6c60c20df0cdbc830285f9a0f14a472d 100644
--- a/typo3/sysext/backend/Classes/Utility/BackendUtility.php
+++ b/typo3/sysext/backend/Classes/Utility/BackendUtility.php
@@ -219,6 +219,7 @@ class BackendUtility
      * @param string $orderBy Optional ORDER BY field(s), if none, supply blank string.
      * @param string $limit Optional LIMIT value ([begin,]max), if none, supply blank string.
      * @param bool $useDeleteClause Use the deleteClause to check if a record is deleted (default TRUE)
+     * @param null|QueryBuilder $queryBuilder The queryBuilder must be provided, if the parameter $whereClause is given and the concept of prepared statement was used. Example within self::firstDomainRecord()
      * @return mixed Multidimensional array with selected records (if any is selected)
      */
     public static function getRecordsByField(
@@ -229,10 +230,14 @@ class BackendUtility
         $groupBy = '',
         $orderBy = '',
         $limit = '',
-        $useDeleteClause = true
+        $useDeleteClause = true,
+        $queryBuilder = null
     ) {
         if (is_array($GLOBALS['TCA'][$theTable])) {
-            $queryBuilder = static::getQueryBuilderForTable($theTable);
+            if (null === $queryBuilder) {
+                $queryBuilder = static::getQueryBuilderForTable($theTable);
+            }
+
             // Show all records except versioning placeholders
             $queryBuilder->getRestrictions()
                 ->removeAll()
@@ -388,11 +393,10 @@ class BackendUtility
             $tcaCtrl = $GLOBALS['TCA'][$table]['ctrl'];
 
             $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
-                          ->getQueryBuilderForTable($table);
-            $expressionBuilder = $queryBuilder->expr();
+                ->getQueryBuilderForTable($table);
 
-            $constraint = $expressionBuilder->andX(
-                $expressionBuilder->eq(
+            $constraint = $queryBuilder->expr()->andX(
+                $queryBuilder->expr()->eq(
                     $tcaCtrl['languageField'],
                     $queryBuilder->createNamedParameter($language, \PDO::PARAM_INT)
                 ),
@@ -406,7 +410,9 @@ class BackendUtility
                 (string)$constraint,
                 '',
                 '',
-                1
+                1,
+                true,
+                $queryBuilder
             );
         }
         return $recordLocalization;
@@ -3965,13 +3971,29 @@ class BackendUtility
      */
     public static function firstDomainRecord($rootLine)
     {
-        $expressionBuilder = $queryBuilder = static::getQueryBuilderForTable('sys_domain')->expr();
-        $constraint = $expressionBuilder->andX(
-            $expressionBuilder->eq('redirectTo', $expressionBuilder->literal('')),
-            $expressionBuilder->eq('hidden', 0)
+        $queryBuilder = static::getQueryBuilderForTable('sys_domain');
+        $constraint = $queryBuilder->expr()->andX(
+            $queryBuilder->expr()->eq(
+                'redirectTo',
+                $queryBuilder->createNamedParameter('', \PDO::PARAM_STR)
+            ),
+            $queryBuilder->expr()->eq(
+                'hidden',
+                $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)
+            )
         );
         foreach ($rootLine as $row) {
-            $dRec = self::getRecordsByField('sys_domain', 'pid', $row['uid'], (string)$constraint, '', 'sorting');
+            $dRec = self::getRecordsByField(
+                'sys_domain',
+                'pid',
+                $row['uid'],
+                (string)$constraint,
+                '',
+                'sorting',
+                '',
+                true,
+                $queryBuilder
+            );
             if (is_array($dRec)) {
                 $dRecord = reset($dRec);
                 return rtrim($dRecord['domainName'], '/');
diff --git a/typo3/sysext/backend/Classes/View/PageLayoutView.php b/typo3/sysext/backend/Classes/View/PageLayoutView.php
index 8550f9bd5b366c5524b0a3b2772e6e43f9fe9ac8..fc48b1e8b4acdbcba8a5095e987d0ba302d6fd76 100644
--- a/typo3/sysext/backend/Classes/View/PageLayoutView.php
+++ b/typo3/sysext/backend/Classes/View/PageLayoutView.php
@@ -451,18 +451,23 @@ class PageLayoutView extends \TYPO3\CMS\Recordlist\RecordList\AbstractDatabaseRe
         }
         if ($userCanEditPage) {
             $languageOverlayId = 0;
-            $overlayExpressionBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
+            $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
                 ->getConnectionForTable('pages_language_overlay')
-                ->getExpressionBuilder();
-            $constraint = $overlayExpressionBuilder->eq(
+                ->createQueryBuilder();
+            $constraint = $queryBuilder->expr()->eq(
                 'sys_language_uid',
-                (int)$this->tt_contentConfig['sys_language_uid']
+                $queryBuilder->createNamedParameter($this->tt_contentConfig['sys_language_uid'], \PDO::PARAM_INT)
             );
             $pageOverlayRecord = BackendUtility::getRecordsByField(
                 'pages_language_overlay',
                 'pid',
                 (int)$this->id,
-                $constraint
+                $constraint,
+                '',
+                '',
+                '',
+                true,
+                $queryBuilder
             );
             if (!empty($pageOverlayRecord[0]['uid'])) {
                 $languageOverlayId = $pageOverlayRecord[0]['uid'];
diff --git a/typo3/sysext/recycler/Classes/Domain/Model/DeletedRecords.php b/typo3/sysext/recycler/Classes/Domain/Model/DeletedRecords.php
index 6af8b3423b32fbe67104c5f19d6a800a642b3c59..0d512ea3ef7f44fc67a399c0e35add35b2ad655d 100644
--- a/typo3/sysext/recycler/Classes/Domain/Model/DeletedRecords.php
+++ b/typo3/sysext/recycler/Classes/Domain/Model/DeletedRecords.php
@@ -156,12 +156,21 @@ class DeletedRecords
         if (trim($filter) !== '') {
             $labelConstraint = $queryBuilder->expr()->like(
                 $tcaCtrl['label'],
-                $queryBuilder->quote('%' . $queryBuilder->escapeLikeWildcards($filter) . '%')
+                $queryBuilder->createNamedParameter(
+                    $queryBuilder->quote('%' . $queryBuilder->escapeLikeWildcards($filter) . '%'),
+                    \PDO::PARAM_STR
+                )
             );
             if (MathUtility::canBeInterpretedAsInteger($filter)) {
                 $filterConstraint = $queryBuilder->expr()->orX(
-                    $queryBuilder->expr()->eq('uid', (int)$filter),
-                    $queryBuilder->expr()->eq('pid', (int)$filter),
+                    $queryBuilder->expr()->eq(
+                        'uid',
+                        $queryBuilder->createNamedParameter($filter, \PDO::PARAM_INT)
+                    ),
+                    $queryBuilder->expr()->eq(
+                        'pid',
+                        $queryBuilder->createNamedParameter($filter, \PDO::PARAM_INT)
+                    ),
                     $labelConstraint
                 );
             } else {
@@ -176,7 +185,7 @@ class DeletedRecords
                 ->count('*')
                 ->from($table)
                 ->where(
-                    $queryBuilder->expr()->neq($deletedField, 0),
+                    $queryBuilder->expr()->neq($deletedField, $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)),
                     $queryBuilder->expr()->eq('pid', $queryBuilder->createNamedParameter($id, \PDO::PARAM_INT)),
                     $filterConstraint
                 )
@@ -246,15 +255,23 @@ class DeletedRecords
         }
         // query for actual deleted records
         if ($allowQuery) {
+            $where = $queryBuilder->expr()->andX(
+                $queryBuilder->expr()->eq(
+                    'pid',
+                    $queryBuilder->createNamedParameter($id, \PDO::PARAM_INT)
+                ),
+                $filterConstraint
+            );
             $recordsToCheck = BackendUtility::getRecordsByField(
                 $table,
                 $deletedField,
                 '1',
-                ' AND ' . $queryBuilder->expr()->andX($queryBuilder->expr()->eq('pid', (int)$id), $filterConstraint),
+                ' AND ' . $where,
                 '',
                 '',
                 $limit,
-                false
+                false,
+                $queryBuilder
             );
             if ($recordsToCheck) {
                 $this->checkRecordAccess($table, $recordsToCheck);