将值与数据库中的每一行进行比较 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
使用此查询的结果,您将获得本月的所有金额。总结你的结果,你就完成了。
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 tocurrent_month
thendisplay 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
使用此查询的结果,您将获得本月的所有金额。总结你的结果,你就完成了。