TYPO3:如何为 Doctrine insert() 迁移 $GLOBALS['TYPO3_DB']->quoteStr()

TYPO3: how to migrate $GLOBALS['TYPO3_DB']->quoteStr() for Doctrine insert()

过去,我使用 quoteStr() 来清理输入数据,然后再使用 exec_INSERTquery() 将其插入数据库,例如像这样:

'info' => $GLOBALS['TYPO3_DB']->quoteStr($info, 'tx_mytablename')

在 TYPO3 8 及更高版本中使用 Doctrine 来清理输入数据(字符串)的正确方法是什么?

根据您的用例,Doctrine 提供的以下函数可以(应该!)用于清理 SQL 查询中的数据:

  • createNamedParameter()
  • quoteIdentifier()
  • quoteIdentifiers()

TYPO3 documentation(第 "QueryBuilder" 部分)中提供了更多详细信息。

以下代码示例演示如何将 createNamedParameter() 应用于名为 $customerNumber 的整数值。

$query = $queryBuilder
  ->select('username', 'customerNumber')
  ->from('fe_users')
  ->where($queryBuilder->expr()->eq(
    'customerNumber',
    $queryBuilder->createNamedParameter($customerNumber, \PDO::PARAM_INT)
  ))
  ->execute();