簡體   English   中英

使用PHP變量的PHP-POSTGRES查詢日期(年,月)

[英]PHP-POSTGRES query date(year,month) with php variables

我在下面看到表格“約會”。

約定
id | app_date(日期)| app_price(整數)
1 | 2013-08-21 | 45
2 | 2012-07-01 | 30
3 | 2013-08-11 | 50
.. ...... ....

我創建了兩個下拉選項,一個選項用於多年(例如2011、2012、2013等),另一個選項用於幾個月(一月,二月...)。 如果用戶選擇“一月”,則查詢值為“ 01”,二月為“ 02” .....,十二月為“ 12”。 我希望用戶在選擇年份和月份之后“提交”,然后接收約會的結果。

我寫了下面看到的代碼。

$year=$_GET['year']; //e.g. 2013
$month=$_GET['month']; //e.g. 08
if ($_GET['stat']==true) {
$con = pg_connect("host=localhost dbname=appdb user=postgres password=111")
or die('Could not connect: ' . pg_last_error());  
$query="select app_date, app_price
from appointment
where TO_CHAR(app_date, 'YYYY')='$year' AND TO_CHAR(app_date, 'MM')='$month' ";
$result=pg_query($query);
echo "<table align='center' width='20%' border='1'>
<th>".$month."</th>";
while ($row=pg_fetch_array($result))
 {   
$sum=$sum+$row['app_price'];
$sum_app=$sum_app+1;
}
echo "<tr><td>TOTAL APPOINTMENTS:</td><td>".$sum_app."</td><tr>
<tr><td>TOTAL PRICE:</td><td>".$sum."</td><tr>";
}
?>

提交后,我沒有任何結果。 我認為變量$ year ='2013'和$ month = '08'不是與“ date”數據類型相等的正確值類型。 我應該如何均衡呢?

謝謝大家。

如果您在字段app_date上有索引,它將被忽略,並將掃描整個表。 更好的例子是使用比較運算符,例如BETWEEN

$dt = new DateTime("$year-$month-1");
$sql = "
    SELECT app_date, app_price
    FROM appointment
    WHERE app_date BETWEEN '{$dt->format('Y-m-d')}' AND '{$dt->format('Y-m-t')}'
";

示范

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM