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

时间:2015-03-01 14:51:46

标签: php mysql html-table

  

已经解决了。我刚在SQL子句中使用了WHERE MONTH(due_date) = $month。从来不知道它会是那样的。谢谢你的所有答案!

我们有一个名为bills的表格。即使已经为记录目的付款,我们也不会删除帐单。

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

  

下面的固定代码

$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有当月的持有人

     

$bdata['M']提取月份的持有人。我们只是显示它来检查。

     

因此,如果extracted_monthcurrent_month,那么display bill

我希望你能帮助我。

PS:还是个业余爱好者。这还不是一个在线网站。我们只需要帮助就可以让它发挥作用。

2 个答案:

答案 0 :(得分:0)

1)在第一个SQL中使用WHERE语句只从表中获取这些行。

像这样:

$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。)

答案 1 :(得分:0)

尝试使用SQL解决此问题。

SELECT b.amount_paid 从账单b 月份(b.due_date)= 3

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