计数方法sql类在php中不起作用
我试图使用一个对象来计算数据库中满足某些条件的记录数,但我无法确定如何使其工作。以下代码是我的db连接类中的计数方法:计数方法sql类在php中不起作用,php,sql,class,Php,Sql,Class,我试图使用一个对象来计算数据库中满足某些条件的记录数,但我无法确定如何使其工作。以下代码是我的db连接类中的计数方法: //Counts the total number of records and returns integer public function totalCount($fieldname, $tablename, $where = "") { $q = "SELECT count(".$fieldname.") FROM " . $tablename . "
//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,即使我的数据库中有数千条应该计数的记录。感谢大家指点我的语法哪里不对
谢谢此方法是为所有表/字段返回零,还是仅为您测试的表/字段返回零
$mydb->totalCount('amount','transactions','WHERE userid=13')代码>
计数
仅计数非空
值。要对所有记录进行计数,请将星号传递给count
函数:count(*)
查询执行返回false,如果条件是count始终为零,则它不会进入内部,您可以使用prepared语句准备查询,然后执行它。而且,我不认为必须将字段作为参数传递给COUNT
无论如何,根据你的问题,这将是一个更好的查询
$q = 'SELECT COUNT( * ) FROM ' . $strTable . ' WHERE ' . $strCond;
同样,由于您使用的是MySQLi,使用。我发现很有趣的一点是,您要求界面的用户通过WHERE子句传递WHERE
标识符。我试图使其足够开放,以便允许GROUP BY等。我可能会在更长的时间内进一步开发它,但我对PHP中的OOP非常陌生,因此我尝试先学习。。如果我走错了方向,请纠正我!我可能会为groupby
、have
和orderby
添加额外的参数,因为它们具有不同的功能。您可以为这些参数设置默认值,并检查界面的用户是否实际传递了任何内容。不过,这次讨论有点离题。有道理!一旦我完成了这项工作,我就会这样做——更好的办法是创建一个SQL语句类,它封装了SQL语句的所有这些不同部分。然后将其传递给totalCount函数。您应该看看PHP的PDO
对象。它已经是处理数据库的面向对象接口。你可以包装/扩展它来添加你想要的功能。谢谢-解决了它。。。帮助我发现了一个粗心的拼写错误:/