【发布时间】: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 啊啊啊啊非常感谢。那成功了。我很感激你!