PHP return 来自 Mysql 查询的空值
PHP return empty value from Mysql Query
我使用相同的查询 return 两个日期之间的一个整数值,它是列
的总和
SQL 查询:
SELECT SUM(TransactionAmount) FROM `sales` WHERE TransactionTime BETWEEN '2020-12-15' AND '2020-12-16'
在此PHP代码:
<?php
require 'config/db.php';
if(isset($_POST["searchinDate-btn"])){
$start_date = $_POST['startdate'];
$end_date = $_POST['enddate'];
$totalRev = "SELECT SUM(TransactionAmount) FROM `sales` WHERE TransactionTime BETWEEN '$start_date' AND '$end_date'";
$totalRevQ = mysqli_query($conn, $totalRev);
$rev = mysqli_fetch_assoc($totalRevQ);
$revenue = $rev[0];
}
?>
(附加)HTML代码:
<form action="Dashboard.php" method="POST">
<div class="dateselect">
<label for="start-date">Start Date: </label>
<input type="date" id="start-date" name="startdate" value="">
<label for="start-date"> - - End Date: </label>
<input type="date" id="end-date" name="enddate" value="">
<button style="margin-bottom: 3px;" type="submit" name="searchinDate-btn" class="mbtn btn btn-primary">Show</button>
</div>
</form>
<p> <?php echo $revenue; ?> </p>
可变收入 return 出于某种原因什么都没有!
注意:开始日期和结束日期以及查询结果实际上是 return 结果,但我认为显示查询结果存在问题,该结果将是一个整数值,如 562 或其他! (我需要行号 0 的值而不是行数)
UPDATE:错误是从 PHP 传递日期类型以将其与数据库中的时间戳字段类型进行比较。
将日期转换为时间戳我使用这个 PHP 代码:
<?php
require 'config/db.php';
if(isset($_POST["searchinDate-btn"])){
$start_date = $_POST['startdate'];
$StartDate = date("Y-m-d H:i:s", strtotime($start_date));
$end_date = $_POST['enddate'];
$EndDate = date("Y-m-d H:i:s", strtotime($end_date + '24 hours'));
$totalRev = "SELECT SUM(TransactionAmount) AS Revenue FROM `sales` WHERE TransactionTime BETWEEN '$StartDate' AND '$EndDate'";
$totalRevQ = mysqli_query($conn, $totalRev);
$rev = mysqli_fetch_assoc($totalRevQ);
$revenue = $rev['Revenue'];
}
?>
也许在查询中为总和添加一个别名:
$totalRev = "SELECT SUM(TransactionAmount) AS totalAmount FROM `sales` WHERE TransactionTime BETWEEN '$start_date' AND '$end_date'";
然后将$rev = mysqli_fetch_assoc($totalRevQ)
更改为$rev = mysqli_fetch_array($totalRevQ)
,以获取$revenue = $rev["totalAmount"]
的值:D
此外,正如 Strawberry 所说,不要忘记保护该查询免受 SQL 注入,信任用户输入从来都不是好事!
因为您使用了 mysqli_fetch_assoc
函数,所以您需要为结果设置一个名称(在我的示例中,我将此名称命名为“AmountSum”):
<?php
require 'config/db.php';
if(isset($_POST["searchinDate-btn"])){
$start_date = $_POST['startdate'];
$end_date = $_POST['enddate'];
$totalRev = "SELECT SUM(TransactionAmount) AS AmountSum FROM `sales` WHERE TransactionTime BETWEEN '$start_date' AND '$end_date'";
$totalRevQ = mysqli_query($conn, $totalRev);
$rev = mysqli_fetch_assoc($totalRevQ);
$revenue = $rev['AmountSum'];
}
?>
我使用相同的查询 return 两个日期之间的一个整数值,它是列
的总和SQL 查询:
SELECT SUM(TransactionAmount) FROM `sales` WHERE TransactionTime BETWEEN '2020-12-15' AND '2020-12-16'
在此PHP代码:
<?php
require 'config/db.php';
if(isset($_POST["searchinDate-btn"])){
$start_date = $_POST['startdate'];
$end_date = $_POST['enddate'];
$totalRev = "SELECT SUM(TransactionAmount) FROM `sales` WHERE TransactionTime BETWEEN '$start_date' AND '$end_date'";
$totalRevQ = mysqli_query($conn, $totalRev);
$rev = mysqli_fetch_assoc($totalRevQ);
$revenue = $rev[0];
}
?>
(附加)HTML代码:
<form action="Dashboard.php" method="POST">
<div class="dateselect">
<label for="start-date">Start Date: </label>
<input type="date" id="start-date" name="startdate" value="">
<label for="start-date"> - - End Date: </label>
<input type="date" id="end-date" name="enddate" value="">
<button style="margin-bottom: 3px;" type="submit" name="searchinDate-btn" class="mbtn btn btn-primary">Show</button>
</div>
</form>
<p> <?php echo $revenue; ?> </p>
可变收入 return 出于某种原因什么都没有! 注意:开始日期和结束日期以及查询结果实际上是 return 结果,但我认为显示查询结果存在问题,该结果将是一个整数值,如 562 或其他! (我需要行号 0 的值而不是行数)
UPDATE:错误是从 PHP 传递日期类型以将其与数据库中的时间戳字段类型进行比较。
将日期转换为时间戳我使用这个 PHP 代码:
<?php
require 'config/db.php';
if(isset($_POST["searchinDate-btn"])){
$start_date = $_POST['startdate'];
$StartDate = date("Y-m-d H:i:s", strtotime($start_date));
$end_date = $_POST['enddate'];
$EndDate = date("Y-m-d H:i:s", strtotime($end_date + '24 hours'));
$totalRev = "SELECT SUM(TransactionAmount) AS Revenue FROM `sales` WHERE TransactionTime BETWEEN '$StartDate' AND '$EndDate'";
$totalRevQ = mysqli_query($conn, $totalRev);
$rev = mysqli_fetch_assoc($totalRevQ);
$revenue = $rev['Revenue'];
}
?>
也许在查询中为总和添加一个别名:
$totalRev = "SELECT SUM(TransactionAmount) AS totalAmount FROM `sales` WHERE TransactionTime BETWEEN '$start_date' AND '$end_date'";
然后将$rev = mysqli_fetch_assoc($totalRevQ)
更改为$rev = mysqli_fetch_array($totalRevQ)
,以获取$revenue = $rev["totalAmount"]
的值:D
此外,正如 Strawberry 所说,不要忘记保护该查询免受 SQL 注入,信任用户输入从来都不是好事!
因为您使用了 mysqli_fetch_assoc
函数,所以您需要为结果设置一个名称(在我的示例中,我将此名称命名为“AmountSum”):
<?php
require 'config/db.php';
if(isset($_POST["searchinDate-btn"])){
$start_date = $_POST['startdate'];
$end_date = $_POST['enddate'];
$totalRev = "SELECT SUM(TransactionAmount) AS AmountSum FROM `sales` WHERE TransactionTime BETWEEN '$start_date' AND '$end_date'";
$totalRevQ = mysqli_query($conn, $totalRev);
$rev = mysqli_fetch_assoc($totalRevQ);
$revenue = $rev['AmountSum'];
}
?>