亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對 mysql 數據庫的 Php 查詢未給出所需的結果

對 mysql 數據庫的 Php 查詢未給出所需的結果

PHP
四季花海 2023-04-21 15:46:22
所以我有一個包含月份的數據庫表,月份和年份的數值。例如。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     years1            January      1        20202            Febuary      2        20203            March        3        20204            April        4        20205            May          5        20206            June         6        20207            July         7        20208            August       8        20209            September    9        202010           October      10       202011           November     11       202012           December     12       202013           January      1        2021....
查看完整描述

1 回答

?
弒天下

TA貢獻1818條經驗 獲得超8個贊

看起來您已將value數據庫中的列定義為而varchar不是int.?它必須是int,否則 MySQL 將在您的查詢中為測試進行字符串比較>=而不是數字比較。

字符串比較對兩個值進行逐個字符的比較,例如,結果5被視為大于,10因為它實際上是將第一個51第一個進行比較。

為列分配正確的數據類型很重要 - 如果您希望將某些內容視為數字并能夠對其進行數學運算,則必須將其聲明為數字字段。

查看完整回答
反對 回復 2023-04-21
  • 1 回答
  • 0 關注
  • 113 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號