【发布时间】:2013-05-29 23:09:19
【问题描述】:
我将 PHP 与 SQLSRV 一起用于 MSSQL 2008 r2。
我想要做的是,在两个输入框中输入两个日期,并只显示所需日期之间的记录,以及订单总数和总值示例:
我想显示在 24/05/13 和 29/05/13 之间下了多少订单,所以我会得到一个输出,即下了 2 个订单,总价值 = 50。
也许这比我想象的要容易。我是 PHP 和 SQLSRV 的新手。实现这一点的最佳方法是什么?
**Orders Table**
OrderId CustomerID OrderDate OrderValue
1 1 2013-05-29 23.00
2 2 2013-05-26 23.00
3 2 2013-05-26 27.00
4 3 2013-05-24 23.00
*********编辑************** ***
好的,多亏了肖恩,我有了一个起点。我已经将他的查询放入下面的演示脚本中,但是它没有执行,我哪里出错了?
Form.php
<form action="action.php" method="post" >
<input name="StartDate" type="text" id="StartDate" value="start"/>
<input name="StartDate" type="text" id="EndDate" value="end"/>
<input type="submit" name="submit" >
</form>
Action.php 这个页面返回SQL计算
<?php
include("connect.php");
?>
<?php
DECLARE @StartDate datetime
DECLARE @EndDate datetime
DECLARE @CustomerID int
SET @StartDate = '05/24/2013' /* FORM.StartDate */
SET @EndDate = '05/29/2013' /* FORM.EndDate */
SET @CustomerID = 2 /* FORM.CustomerID */
/* Get the TotalOrderValue for All CustomerIDs */
$sql ="SELECT CustomerID, sum(OrderValue) AS TotalOrderValue
FROM Orders
WHERE OrderDate >= @StartDate
AND OrderDate < dateAdd(d,1,@EndDate)
GROUP BY CustomerID
ORDER BY CustomerID";
$stmt = sqlsrv_query( $conn, $sql);
if( $stmt === false ) {
die( print_r( sqlsrv_errors(), true));
}
$CustomerID = sqlsrv_get_field( $stmt, 0);
echo "$TotalOrderValue: ";
?>
【问题讨论】:
-
谢谢,我看看这个。
-
在您的表单中,它们都被命名为 StartDate。当您将查询放入您的 PHP 代码时,您可以删除 DECLARE 和 SET 语句,只需从表单中动态输入 StartDate 和 EndDate。上面的查询将为您提供所有客户。如果您只需要一个,您可能应该只查询一个。您的 OrderDate 是存储为 DATE 数据类型,还是只是存储在不同数据类型中的日期文本?
标签: php sql-server sqlsrv