我想将查询作为准备好的语句提交,如下所示。
$query = $this->createQuery();
$query->getQuerySettings()->usePreparedStatement(TRUE);
$sqlParamList[] = '[email protected]';
$sql = 'SELECT uid FROM table_name WHERE email = ?';
$query->statement($sql, $sqlParamList);
$result = $query->execute();
但是我总是会收到如下错误。
您的SQL语法有误;检查手册对应于您的MariaDB服务器版本,以在'?'附近使用正确的语法在第1行'
我错了?
您需要首先将$sql
解析为准备好的语句:
$preparedSql = $this->objectManager->get(\TYPO3\CMS\Core\Database\PreparedStatement::class, $sql, 'table_name');
使用$this->objectManager->get()
,可使用参数PreparedStatement
和$sql
实例化类'table_name'
。
这将更改您的$ sql并解析?
以用作准备好的语句。
另一种方法:
$query = $this->createQuery();
$query->getQuerySettings()->usePreparedStatement(TRUE);
$sqlParamList = [
':email' => '[email protected]'
];
$sql = 'SELECT uid FROM table_name WHERE email = :email';
$query->statement($sql, $sqlParamList);
$result = $query->execute();
无法测试,只是一种方法。