代码之家  ›  专栏  ›  技术社区  ›  Pravin Vavadiya

extbase typo3 7.6中准备的语句不工作

  •  0
  • Pravin Vavadiya  · 技术社区  · 7 年前

    我有一个关于extbase的问题,希望有人能帮助我。我想将查询作为准备好的语句提交,如下所示。

    $query = $this->createQuery();
    $query->getQuerySettings()->usePreparedStatement(TRUE);
    $sqlParamList[] = 'test@gamil.com';
    $sql = 'SELECT uid FROM table_name WHERE email = ?';
    $query->statement($sql, $sqlParamList);
    $result = $query->execute();
    

    但我总是会出现下面这样的错误。

    您的SQL语法有错误;请查看手册 对应Y 我们的mariadb服务器版本,用于正确的语法,以便在'?'附近使用。在1'行

    请帮帮我?我哪里错了?

    2 回复  |  直到 7 年前
        1
  •  5
  •   Thomas Löffler    7 年前

    你需要分析你的 $sql 先准备好声明:

    $preparedSql = $this->objectManager->get(\TYPO3\CMS\Core\Database\PreparedStatement::class, $sql, 'table_name');
    

    $this->objectManager->get() 你马上就要上课了 PreparedStatement 有了这些论据 $SQL 'table_name' .

    这将更改$SQL并分析 ? 用作准备好的陈述。

        2
  •  0
  •   Thomas Löffler    7 年前

    另一种方法:

    $query = $this->createQuery();
    $query->getQuerySettings()->usePreparedStatement(TRUE);
    $sqlParamList = [
        ':email' => 'test@gamil.com'
    ];
    $sql = 'SELECT uid FROM table_name WHERE email = :email';
    $query->statement($sql, $sqlParamList);
    $result = $query->execute();
    

    不能测试它,只是一种方法。