0

我在一个扩展文件中看到了以下代码:

$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
                    'fu.uid, fu.tstamp, fu.username, fu.usergroup, fu.email, fu.tx_jcregister_first_name, fu.tx_jcregister_last_name',
                    'fe_users fu'.$from,
                    $where,
                    '',
                    $markerArray['###SORT###'].' '.$markerArray['###ORDER###'],
                    $limit
                );

当我检查文件:class.t3lib_db.php 时,我看到了另一个函数/方法:

function SELECTquery($select_fields, $from_table, $where_clause, $groupBy = '', $orderBy = '', $limit = '')

所以我的问题是:

exec_SELECTquery和有什么区别SELECTquery?什么时候使用exec_SELECTquery?什么时候用SELECTquery

4

1 回答 1

1

在这个类中,还有更多的数据库操作放在单个方法中,比如updatedelete等等。它们成对出现,一个带有exec_前缀。如果您阅读了文档(显然您没有阅读),那么对于每种方法都有很好的解释。

不带前缀的方法exec_都返回一个字符串,即构建的查询。exec_xyzall 返回查询结果,因为查询不仅已构建,而且已执行,顾名思义。

function exec_SELECTquery($select_fields, $from_table, $where_clause, $groupBy = '', $orderBy = '', $limit = '') {
    $query = $this->SELECTquery($select_fields, $from_table, $where_clause, $groupBy, $orderBy, $limit);
    $res = mysql_query($query, $this->link);
    if ($this->debugOutput) {
        $this->debug('exec_SELECTquery');
    }
    if ($this->explainOutput) {
        $this->explain($query, $from_table, $this->sql_num_rows($res));
    }
    return $res;
}

如果您if暂时忽略这两个 s,则此方法只会“包装”查询构建并执行它。这两个条件仅用于调试。

顺便说一句:我强烈建议你自己做更多的研究,比如用谷歌搜索,看看文档或者深入代码。如果您不理解您的问题所涉及的一小段代码,我怀疑您是否有必要为您调查此级别详细信息的 TYPO3 扩展,因为您的最新问题暗示了(无意冒犯)。

于 2013-08-01T07:04:17.473 回答