所以我有一个包含月份的数据库表,月份和年份的数值。例如。2020 年 6 月 6 日。
我有一个选择下拉列表,它根据表中的数据动态填充。
这个想法是,如果当前月份是 6 月,则选择下拉列表应该只填充 6 月到 12 月。
我遇到的问题是,我不明白的是,在我运行查询时的页面上,下拉列表只填充了五月到九月。而如果我直接在数据库中的表上运行相同的查询,我会得到想要的结果。
下面的查询:
$yvalue = $_POST['years']; //assume this to be "2020";
$curyear = date('Y');
$curmonth = date('n'); // Lets also assume this to be "5";
if ($yvalue==$curyear) {
$query = "SELECT calmonthsID, months, value, years from calmonths WHERE years=? AND value>=? ORDER BY calmonthsID ASC";
$stmt = $connQlife->prepare($query);
$stmt->bind_param('ss', $yvalue, $curmonth);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($calmonthsID, $months, $value, $years);
}else{
$query = "SELECT calmonthsID, months, value, years from calmonths WHERE years=? ORDER BY calmonthsID ASC";
$stmt = $connQlife->prepare($query);
$stmt->bind_param('s', $yvalue);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($calmonthsID, $months, $value, $years);
}
echo "<option>- Select Month -</option>";
while($stmt->fetch()) {
echo '<option value='.$value.'>'.$months.'</option>';
} $stmt->close();
当上面的查询在页面上运行时,下拉列表中会填充月份 May 到 September。省略 10 月至 12 月。
当我假设$curmonth = date('n');是时,10我得到了 2 月到 12 月的下拉列表。省略一月。
再次当我假设$curmonth = date('n');是时11,我得到了从二月到十二月的下拉列表。省略一月和十月。
当我假设时12,一月、十月和十一月不见了。
但是直接在数据库中运行所有这些查询给出了预期的结果。所以我对在 Php 中运行查询时出了什么问题或发生了什么感到困惑。
这是数据库数据:
calmonthsID months value years
1 January 1 2020
2 Febuary 2 2020
3 March 3 2020
4 April 4 2020
5 May 5 2020
6 June 6 2020
7 July 7 2020
8 August 8 2020
9 September 9 2020
10 October 10 2020
11 November 11 2020
12 December 12 2020
13 January 1 2021
....
弑天下