gpt4 book ai didi

php和mysql显示date_begin和date_end之间的每日收入

转载 作者:行者123 更新时间:2023-11-29 15:52:17 24 4
gpt4 key购买 nike

我有一个看起来像这样的表格:

$table_name = 'transactions';

+---------------------+--------+
| date | amount |
+---------------------+--------+
| 2019-05-01 03:11:34 | 5 |
| 2019-05-01 04:26:26 | 10 |
| 2019-05-01 07:27:34 | 10 |
| 2019-05-01 19:22:47 | 20 |
| 2019-05-02 00:42:10 | 5 |
| 2019-05-02 04:27:31 | 10 |
| 2019-05-02 05:14:03 | 5 |
| 2019-05-02 08:39:24 | 5 |
| 2019-05-03 12:45:29 | 15 |
| 2019-05-03 12:48:23 | 15 |
| 2019-05-03 13:50:14 | 5 |
| 2019-05-03 16:58:08 | 20 |
| 2019-05-04 01:27:28 | 10 |
| 2019-05-04 11:53:15 | 20 |
| 2019-05-04 15:48:51 | 5 |
| 2019-05-04 15:59:48 | 5 |
| 2019-05-05 01:55:40 | 10 |
| 2019-05-05 05:32:53 | 15 |
| 2019-05-05 11:56:56 | 15 |
| 2019-05-05 12:09:26 | 10 |
+---------------------+--------+

对于此示例,表每天恰好有 4 条记录。但实际的 table 每天当然可以有或多或少。

我需要的是特定时间跨度之间所有日期的列表,以及金额总和,即每天的收入。

示例:

输入:

$date_begin = '2019-05-02 00:00:00';
$date_end = '2019-05-04 23:59:59';

对于这些参数,脚本应输出以下内容:

2019-05-02
25

2019-05-03
55

2019-05-04
40

第二(不是那么重要。请专注于第一个任务):显示每一天的星期几的名称会很有帮助。我想我必须为此使用一个库。或者 php 本身能够确定过去日期的日期名称吗?

所以,它看起来像这样:

2019-05-02
Thursday
25

2019-05-03
Friday
55

2019-05-04
Saturday
40

我真的尝试先自己解决这个问题,并正在寻找示例。但我发现的每一个要么比我需要的更复杂,要么太不同以至于我无法正确采用。

谢谢

编辑:

我尝试了回复中的建议之一。但我得到的只是一张空白页。谁能告诉我哪里错了?

<?php

$conn = mysqli_connect($dbserver, $dbuser, $dbpw, $dbname) or die("Connection failed: " . mysqli_connect_error());
$conn->query("SET NAMES 'utf8'");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

$table_name = 'transactions';

$date_begin = '2019-05-02 00:00:00';
$date_end = '2019-05-05 23:59:59';

$sql = "SELECT DATE(`date`), SUM(`amount`) FROM $table_name WHERE `date` BETWEEN '$date_begin' AND '$date_end' GROUP BY DATE(`date`) ORDER BY `date`";

$rs_result = mysqli_query($conn, $sql);

?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Income daily</title>
<meta name="robots" content="noindex, nofollow">
</head>

<body>

<?php

while ($row = mysqli_fetch_assoc($rs_result)) {

echo '
'.$row['date'].'

<br>

'.$row['amount'].'

<br><br>

';

}

?>


</body>
</html>

暂时不用担心安全问题。之后我会处理这个问题。

最佳答案

该查询读起来有点像您描述您想要的内容。您尚未显示任何代码或指定 MySQL API,因此请参阅此处了解安全的查询方法 How can I prevent SQL injection in PHP? :

SELECT DATE(`date`), SUM(`amount`) FROM $table_name
WHERE `date` BETWEEN '$date_begin' AND '$date_end'
GROUP BY DATE(`date`) ORDER BY `date`

然后,在获取行并输出时,只需使用 date('l') 即可获取当天的文本表示形式。

关于php和mysql显示date_begin和date_end之间的每日收入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56706703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com