将值与数据库中的每一行进行比较 table

Compare a value to each row in the database table

Already solved. I just used WHERE MONTH(due_date) = $month in the SQL clause. Never knew it would just be like that. Thank you for all your answer!

我们有一个 table 叫做 bills。我们不会删除帐单,即使帐单已经支付以供记录。

所以我们的目标是只显示The Bills for this Month。我有一个$cur_month = current month value。我知道如何使用 MONTH() 从字段中提取月份值,通过 table 使用到 运行 的循环,但是当我尝试 echo MONTH(date) 值时显示的系列只是第一行的月值。似乎无法获取其他行的 MONTH VALUE。

Fixed code below

$query = "SELECT * FROM bill WHERE MONTH(due_date)=$month";
$bresult = mysql_query($query);

while($brow = mysql_fetch_array($bresult, MYSQL_ASSOC))
{
    $bdata = mysql_fetch_assoc(mysql_query("SELECT MONTH(due_date) AS M FROM `bill`"));
    if($bdata['M'] == $month)
    {
        echo "<tr>";
        echo "<td>".$brow['room_id']."</td>";
        echo "<td>".$brow['tenant_id']."</td>";
        echo "<td>".$brow['due_date']."</td>";
        echo "</tr>";
    }   
}   

$month there is the holder of the current month

$bdata['M'] there is the holder of the month extracted. We just displayed it to check.

So if extracted_month is equls to current_month then display bill

希望你能在这方面帮助我。

PS:还是个业余爱好者。这还不是在线网站。我们只需要帮助让它正常工作。

1) 在您的第一个 SQL 中使用 WHERE 语句仅从 table.

中获取这些行

像这样:

$query = "SELECT *, MONTH(due_date) as M FROM bill WHERE MONTH(due_date)=" . $month;
$bresult = mysql_query($query);

while($brow = mysql_fetch_array($bresult, MYSQL_ASSOC)) {
    echo "<tr>";
    echo "<td>".$brow['M']."</td>";
    echo "<td>".$brow['tenant_id']."</td>";
    echo "<td>".$brow['due_date']."</td>";
    echo "</tr>";
}   

2) 我发现始终检查是否创建了结果对象是一种很好的做法,如果创建了,则检查它是否返回了匹配项(使用 mysql_num_rows($result))。这样,如果出现问题(最有可能在 SQL 语句中),您可以显示错误或向用户显示没有匹配项(在这种情况下为账单)。

3) 尝试使用 MYSQLI 连接到您的数据库而不是 MYSQL,因为后者已被弃用。 (参见:http://php.net/manual/en/mysqli-result.fetch-assoc.php 示例。)

尝试使用 SQL 来解决这个问题。

SELECT b.amount_paid 来自账单 b 其中月份(b.due_date)= 3

使用此查询的结果,您将获得本月的所有金额。总结你的结果,你就完成了。