關於資料庫查詢然產生的bug

來源:互聯網
上載者:User
手裡有一段老代碼, 今天突然出BUG了,實際上這段代碼在某些伺服器上可以正常運 我已經修複 但是不清楚什麼原因導致BUG產生,所以

 $edit=$_POST['edit']; $time=date("Y-m-d",time()-24*7*3600); $result =$db->fetch_all("select * from table where workid= $edit and scantime >\"". $time."\"");修複後 $edit=$_POST['edit']; $time=date("Y-m-d",time()-24*7*3600); $result =$db->fetch_all("select * from table where workid= $edit and scantime > $time  ");主要是把]scantime >\"". $time."\"" 這個條件替換為 scantime > $time 就能正常擷取資料,區別是執行mysql語句的判定條件由 scantime >"2016-01-28" 修改為scantime > 2016-01-28 在$time前後是否拼接雙引號scantime 這個欄位的類型是datetime 事實上我之前的工作人員是用後一種寫法查詢不出資料知道改成前一種 ,今天我又改回來 ,不知道這個BUG原因究竟在哪 所以求助

回複內容:

手裡有一段老代碼, 今天突然出BUG了,實際上這段代碼在某些伺服器上可以正常運 我已經修複 但是不清楚什麼原因導致BUG產生,所以

 $edit=$_POST['edit']; $time=date("Y-m-d",time()-24*7*3600); $result =$db->fetch_all("select * from table where workid= $edit and scantime >\"". $time."\"");修複後 $edit=$_POST['edit']; $time=date("Y-m-d",time()-24*7*3600); $result =$db->fetch_all("select * from table where workid= $edit and scantime > $time  ");主要是把]scantime >\"". $time."\"" 這個條件替換為 scantime > $time 就能正常擷取資料,區別是執行mysql語句的判定條件由 scantime >"2016-01-28" 修改為scantime > 2016-01-28 在$time前後是否拼接雙引號scantime 這個欄位的類型是datetime 事實上我之前的工作人員是用後一種寫法查詢不出資料知道改成前一種 ,今天我又改回來 ,不知道這個BUG原因究竟在哪 所以求助

  • 修改後 scantime > 2016-01-28 這個條件,由於 2016-01-28 不是合法的 DATETIME Literal,因此被轉為 '0000-00-00 00:00' 處理了。請檢查你查詢的結果,只要 scantime 這個欄位不為 NULL 都符合這個條件。

  • 修改前不能正常擷取資料,請在 MySQL 用戶端手工執行相應查詢調試錯誤,確認資料是否存在。

  • 根據 MySQL 文檔中,通常我們用單引號來包裹一個日期時間。

  • 最後但很重要,這段代碼是非常危險的,從 $_POST 得到一個來自使用者(可能是駭客哦)的變數,不做任何 escape 處理就放到查詢裡,這存在 SQL 插入式攻擊的風險,是非常嚴重的安全隱患。

  • MySQL ALLOW_INVALID_DATES

  • MySQL Date and Time Literals

  • PHP 文檔關於 SQL 注入的說明

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.