【问题标题】:Typo3 extbase sql_fetch_assoc errorTypo3 extbase sql_fetch_assoc 错误
【发布时间】:2013-06-12 10:39:21
【问题描述】:

在 Typo3 6.1 版中,我在 My extension Repository 中编写了一些自定义查询

例如在文件 Mytest/Classes/Domain/Repository/MytestRepository.php 中

class MytestRepository extends \TYPO3\CMS\Extbase\Persistence\Repository {
 public function myFunction(){

        $sql = 'SELECT * FROM some_table ';

        $sqlResult = $GLOBALS['TYPO3_DB']->sql_query($sql);
        while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($sqlResult)) {
                $rowone = $row['rowone'];
        }
 }
}

并在控制器中调用该函数

$test = $this->MytestRepository->myFunction();

但这里的问题是,我遇到了错误

Fatal error: Call to a member function fetch_assoc() on a non-object in /home/src/typo3_src-6.1.1/typo3/sysext/core/Classes/Database/DatabaseConnection.php on line 1029 

有人有解决办法吗? 提前致谢。

【问题讨论】:

    标签: typo3 extbase


    【解决方案1】:

    您可以像这样执行自定义查询:

    $query = $this->createQuery();
    $query->statement('SELECT * FROM some_table');
    $result = $query->execute();
    

    如果您不想从查询中获取对象,我假设查看您的 while 循环,您可以在执行查询之前设置以下行:

    $query->getQuerySettings()->setReturnRawQueryResult(TRUE);
    

    使用setReturnRawQueryResult,您会得到一个普通数组。

    【讨论】:

    • 非常感谢。问题不是来自while循环。在之前的函数中,我对截断表有类似的自定义查询。在那里我误以为我添加了 query->getQuerySettings()->setReturnRawQueryResult(TRUE);
    • 能否请您正确标记答案以解决您的问题?
    • 对于 TYPO33 7.x 你可以写 return $query->execute(TRUE);因为 setReturnRawQueryResult 被贬低了。
    猜你喜欢
    • 2021-10-09
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多