返回库函数类型exec_SELECTcountRows

时间:2011-08-22 16:16:28

标签: php sql types typo3

Typo3 DB LIB有一个名为exec_SELECTcountRows的方法。实现如下:

/**
 * Counts the number of rows in a table.
 *
 * @param   string      $field: Name of the field to use in the 
                        COUNT() expression (e.g. '*')
 * @param   string      $table: Name of the table to count rows for
 * @param   string      $where: (optional) WHERE statement of the query
 * @return  mixed       Number of rows counter (integer) or 
                        false if something went wrong (boolean)
 */

public function exec_SELECTcountRows($field, $table, $where = '') {
    $count = FALSE;
    $resultSet = $this->exec_SELECTquery('COUNT(' . $field . ')', $table, $where);
    if ($resultSet !== FALSE) {
        list($count) = $this->sql_fetch_row($resultSet);
        $this->sql_free_result($resultSet);
    }
    return $count;
}

问题:

exec_SELECTcountRows的返回类型是真正的整数还是包含一个的字符串?

2 个答案:

答案 0 :(得分:1)

PHP是松散类型的,字符串是整数,反之亦然。这取决于背景。我认为该函数的返回类型将根据查询和上下文而改变。

例如,函数可以返回FALSE这是一个布尔值。

只要有实际的数据库结果要返回,基于count(*)的列通常以字符串形式返回,而不是整数(带MySQL Functions)。所以在这种情况下,返回类型实际上是字符串,而不是整数。但是,由于PHP的输入类型很宽松,因此这并没有多大区别。

注意差距:

该函数可以返回字符串或FALSE。如果您编写单元测试,则应该检查类型并在此处有所不同。

该函数已经记录了混合返回类型,因此如果它返回FALSE则首先置位。

如果不返回false,如果需要从字符串中获取数字整数值,则断言返回值的(int)值。

答案 1 :(得分:1)

其实你是对的。 PHPdoc与行为不同(因为mysql函数将值作为字符串返回)。

我提交了bug report,因为我认为应该更改它以返回一个真正的整数。