我正在尝试使用一个对象来计算我的数据库中符合某些条件的记录数,但我无法确定如何使其工作。以下代码是我的db连接类中的count方法:
//Counts the total number of records and returns integer
public function totalCount($fieldname, $tablename, $where = "")
{
$q = "SELECT count(".$fieldname.") FROM "
. $tablename . " " . $where;
$result = $this->mysqli->query($q);
$count = 0;
if ($result) {
while ($row = mysqli_fetch_array($result)) {
$count = $row[0];
}
}
return $count;
}
此代码在课堂外:
//New instantiation
$mydb = new myDBC();
//Count the number of transactions for the user...
$count = $mydb->totalCount('amount','transactions','WHERE userid = 13');
//output the number of transactions for the user
print $count;
由于某种原因,这总是显示0,即使我的数据库中有数千条记录应该计算在内。感谢关于我的语法不正确的任何指针。
由于
答案 0 :(得分:1)
此方法是否为所有表/字段返回零,或者仅测试
$mydb->totalCount('amount','transactions','WHERE userid = 13');
?
count
仅计算NOT NULL
个值。要计算所有记录,请将星号传递给count
函数:count(*)
答案 1 :(得分:0)
查询执行返回false并且如果条件为什么计数总是为零,则它不会进入内部
答案 2 :(得分:0)
您可以使用预准备语句来准备查询,然后执行它。而且,我认为将一个字段作为参数传递给COUNT
并不重要。
无论如何,根据你的问题,这会产生更好的查询。
$q = 'SELECT COUNT( * ) FROM ' . $strTable . ' WHERE ' . $strCond;
同样,由于您使用的是MySQLi,请使用prepared statements。