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
的返回类型是真正的整数还是包含一个的字符串?
答案 0 :(得分:1)
PHP是松散类型的,字符串是整数,反之亦然。这取决于背景。我认为该函数的返回类型将根据查询和上下文而改变。
例如,函数可以返回FALSE
这是一个布尔值。
只要有实际的数据库结果要返回,基于count(*)
的列通常以字符串形式返回,而不是整数(带MySQL Functions)。所以在这种情况下,返回类型实际上是字符串,而不是整数。但是,由于PHP的输入类型很宽松,因此这并没有多大区别。
注意差距:
该函数可以返回字符串或FALSE
。如果您编写单元测试,则应该检查类型并在此处有所不同。
该函数已经记录了混合返回类型,因此如果它返回FALSE则首先置位。
如果不返回false,如果需要从字符串中获取数字整数值,则断言返回值的(int)值。
答案 1 :(得分:1)
其实你是对的。 PHPdoc与行为不同(因为mysql函数将值作为字符串返回)。
我提交了bug report,因为我认为应该更改它以返回一个真正的整数。