在php中实现特定计数查询
我试图显示可用物品的数量。因此,对于每个用户值为“未完成”的列,应该在查询中对其进行汇总,以形成“未完成”项的总数。但是,当我尝试使用以下代码显示此数字时,出于某种原因,我会为每个用户获得值“1”:在php中实现特定计数查询,php,mysql,Php,Mysql,我试图显示可用物品的数量。因此,对于每个用户值为“未完成”的列,应该在查询中对其进行汇总,以形成“未完成”项的总数。但是,当我尝试使用以下代码显示此数字时,出于某种原因,我会为每个用户获得值“1”: class memberclass { function Available() { if(!$this->DBLogin()) { $this->HandleError("Database login failed!");
class memberclass {
function Available()
{
if(!$this->DBLogin()) {
$this->HandleError("Database login failed!");
return false;
}
$ux = $_SESSION['username_of_user'];
$qry = "Select (one='Not done') + (two='Not done') + (three='Not done') + (four='Not done') + (five='Note done') As num_not_done From $this->tablename Where username='$ux'";
$result = mysqli_query($this->connection, $qry);
$result_length = mysqli_num_rows($result);
echo "$result_length";
}
}
您需要将表达式强制转换为INT,然后求和。对于MySQL数据库,您的查询可能如下所示:
<?= $memberclass->Available(); ?>
你听说过SUM()和GROUP BY吗?@jakubwrona我试过
“选择SUM((one='Not done')+(two='Not done')+(three='Not done')+(four='Note done')+(five='Note done'))作为num_Not done From$this->tablename,其中username='ux'代码>`但它仍然给出相同的结果我不是这个意思。。。您能提供一个您正在查询的表中的数据示例吗?@jakubwrona因此,我希望代码为一个用户计算它表示“未完成”的次数(因此该行)。所以我可以在HTML中实现它作为一种统计信息。任务未完成:
对于我发送给您的链接中的行,它会显示:任务未完成:5。为什么存储字符串而不是1或0表示完成或未完成?这个问题是关于如何存储数据,而不是查询的复杂性;$qry=“从$this->tablename中选择(CAST(one='Not done'作为未签名)+CAST(two='Not done'作为未签名)+CAST(three='Not done'作为未签名)+CAST(four='Not done'作为未签名)+CAST(five='Not done'作为未签名)作为num\u Not done\u done,其中username='ux'$结果=mysqli_查询($this->connection,$qry)$result_length=mysqli_num_行($result);回显“$result_length”代码>对于每个用户,我仍然得到结果“1”,您的代码听起来合乎逻辑,但似乎不起作用。我只知道答案就在查询中。行数为1,但唯一一行将包含一个名为“num\u not\u done”的索引,该索引将包含正确的数字。因此,执行fetch_数组,然后显示$fetched[0]['num_dot_done']
SELECT (CAST(one='Not done' AS UNSIGNED) +
CAST(two='Not done' AS UNSIGNED) +
CAST(three='Not done' AS UNSIGNED) +
CAST(four='Not done' AS UNSIGNED) +
CAST(five='Not done' AS UNSIGNED)) as num_not_done
FROM tableName WHERE username = 'something'