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

时间:2019-09-20 00:40:17

标签: doctrine-orm typo3 typo3-8.x typo3-9.x

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

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

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

1 个答案:

答案 0 :(得分:2)

根据您的用例,可以(应该!)使用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();