这是我在下面尝试过的查询。 $ sql =“从销售中选择ID,到期日,datediff(date('Y / m / d'),日期)
我正在写一个销售程序以识别应付款。 如果到期付款超过7错误,则显示付款,直到我到目前为止尝试为止,我在完整的编码下方附上。当我尝试以下代码错误输出时显示注意:未定义索引:datediff(pay_date,date)if ($_SERVER['REQUEST_METHOD'] == 'GET') {
$today = date("Y/m/d");
$sql = "SELECT id,due, datediff(date('Y/m/d'), date) FROM sales where due != '0' ";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc())
{
$id = $row['id'];
$paydate = $row ["datediff(pay_date, date)"] . " " . "Days" . "</br>";
if($paydate >= 7)
{
$status = "Payment pending";
$color = "#47f50b";
}
else if($paydate >= 3)
{
$status = "Payment pending please settle down the amount";
$color = "yellow";
}
else if($paydate >= 1)
{
$status = "kindly pay the payment";
$color = "#00a8ff";
}
elseif($paydate == 0)
{
$status = "Disable your Order";
$color = "red";
}
?>
答案 0 :(得分:1)
假设您的到期日列称为date
,则您的查询应为
$sql = "SELECT id, due, DATEDIFF(date, CURDATE()) AS paydate FROM sales WHERE due != '0' ";
请注意,我们使用CURDATE()
来获取MySQL中的当前日期,并且我已经将DATEDIFF
的结果别名为paydate
。
您还有一个要设置的问题
$paydate = $row ["datediff(pay_date, date)"]
但是,在查询中,您的表达式与datediff(pay_date, date)
不匹配。这就是为什么最好像我上面那样使用别名,然后您可以将该行更改为简单
$paydate = $row['paydate'];
如果您在查询中更改了公式,则这部分代码仍然有效。
最后,您将" Days"
附加到$paydate
的值上。这将与数字进行比较,例如if($paydate >= 7)
中存在问题,最好不使用" Days"
,直到输出$paydate
的值。
答案 1 :(得分:0)
尝试在SELECT中使用datediff(pay_date, date) as datedif
,然后使用$row["datedif"]