【问题标题】:Show count for only specific values仅显示特定值的计数
【发布时间】:2022-01-06 17:02:29
【问题描述】:

我不明白我哪里出了问题。我希望计数器仅在付款状态(数据库中的列是 payment_status)显示 FREE 或 COMPLETED 时显示,并且列名称、歌曲和乐队是否填写了某些内容(不是空白)。下面是我的代码,但是即使 payment_status 为空,它也会计算条目。任何帮助表示赞赏。

我做了什么: 除了在我能找到的所有地方搜索之外,我还尝试取出、重新排列和更改每一行中 Empty 和 NULLIF 部分的不同值。

这是我的代码

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT id, name, band, song, extra, band2, song2, extra2, band3, 
                song3, extra3, item_name, payment_status 
        FROM nametable";
$result = $conn->query($sql);


$resultt = mysqli_query($conn, "select COUNT(  NULLIF( song, '' ) ) +
                                       COUNT(  NULLIF( song2, '' ) ) + 
                                       COUNT(  NULLIF( song3, '' ) ) AS count 
                                FROM `nametable` ");

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        if( $row['payment_status'] == "Completed" || 
            $row['payment_status'] == "Free")
        {
        
            if( !empty($row["name"]) && 
                !empty($row["band"]) && 
                !empty($row["song"])  )
            {

                if(!$result) {
                    die('Error: ' . mysqli_error($link));
                } else {
                    $num_rows = mysqli_fetch_assoc($resultt);
                    // echo it
                    echo "<font color='aqua'>" . $num_rows['count']."</font>";
                }
            }
        }
    }
} else {
    echo " ";
}
$conn->close();
?> 

【问题讨论】:

  • 良好的代码缩进将帮助我们阅读代码,更重要的是,它将帮助您调试代码Take a quick look at a coding standard 为您自己的利益。您可能会被要求在几周/几个月内修改此代码,最后您会感谢我的。
  • 哦,好的,非常感谢您的提醒。我很感激
  • WHERE payment_status IN('FREE', 'COMPLETED') AND name is not NULL and name != '' etc etc
  • @RiggsFolly 啊啊啊啊非常感谢。那成功了。我很感激你!

标签: php mysql database count


【解决方案1】:

你可以直接从db获取结果

select COUNT(  NULLIF( song, '' ) ) +
       COUNT(  NULLIF( song2, '' ) ) + 
       COUNT(  NULLIF( song3, '' ) ) AS count 
       FROM `nametable`
       WHERE payment_status IN ('FREE ', 'COMPLETED')
       AND concat(ifnull(Name,''), ifnull(Song,''), ifnull(Band ,'')) != ''

【讨论】:

  • 如何更改以便只计算 NULL 条目?
  • 我有以下...... $resultt = mysqli_query($conn, "select count(ifnull(payment_status,' ')) AS count FROM nametable WHERE payment_status IS NULL");
  • @NewDeveloper2021 SO 提供免费调音服务。 .. 但是一个问答网站 .. 你已经发布了一个问题 我已经发布了一个可能的问题 .. 更改或扩展问题是不公平的 .. 如果我的回答是正确的,请(过去 15 分钟)将其标记为已接受...看看这里如何meta.stackexchange.com/questions/5234/… 如果你有其他问题,你应该发布其他问题.. 所以对于新部分,发布一个带有适当数据样本的新问题和表格文本的预期结果,并最终评论我相关链接。
猜你喜欢
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
  • 2020-01-15
  • 2018-04-19
  • 1970-01-01
  • 2021-03-24
  • 1970-01-01
  • 2021-08-10
相关资源
最近更新 更多