Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中实现特定计数查询_Php_Mysql - Fatal编程技术网

在php中实现特定计数查询

在php中实现特定计数查询,php,mysql,Php,Mysql,我试图显示可用物品的数量。因此,对于每个用户值为“未完成”的列,应该在查询中对其进行汇总,以形成“未完成”项的总数。但是,当我尝试使用以下代码显示此数字时,出于某种原因,我会为每个用户获得值“1”: class memberclass { function Available() { if(!$this->DBLogin()) { $this->HandleError("Database login failed!");

我试图显示可用物品的数量。因此,对于每个用户值为“未完成”的列,应该在查询中对其进行汇总,以形成“未完成”项的总数。但是,当我尝试使用以下代码显示此数字时,出于某种原因,我会为每个用户获得值“1”:

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'