台灣最大程式設計社群網站
線上人數
516
 
會員總數:245127
討論主題:189033
歡迎您免費加入會員
討論區列表 >> MS SQL >> [SQL]ASP用SELECT出資料後為何跟WHERE的條件不同
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
[SQL]ASP用SELECT出資料後為何跟WHERE的條件不同
價值 : 0 QP  點閱數:4141 回應數:21

樓主

FAQ
初學者
269 73
0 71
發送站內信

ASP用SELECT出資料後為何跟WHERE的條件不同
A欄位=不可重覆的唯一值
B欄位=可重覆
C欄位=不可重覆的唯一值
我用下面的方式抓出C欄位的值
照理說不符合的話就抓不出來,若符合的話就只有一筆
SELECT * FROM 資料表 WHERE A欄位='變數1' AND B欄位='變數2'
可是有時抓出來C欄位的結果不是我所搜尋的那一筆
但我確定'變數1'跟'變數2'沒有輸入錯,C欄位確是顯示其它筆的資料
這個機率大約是萬分之一吧?
請問你們也有發生過這種事嗎?
我的主機是跑WEB交友網站,每日流量約6000人
資料庫是用ACCESS2000,每日資料搜尋約6000x6次以上
記憶體勝創256MBx2支,不支援Register ECC
而我前面提到的SELECT出資料後跟WHERE的條件不同
從Recordset.open之前到取出資料之後都沒有用
Application.Lock跟Application.unLock
請問這個問題是如何發生的,要如何解決呢?

本篇文章發表於2002-03-20 15:50
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

Allen
捐贈 VP 給 Allen 檢舉此回應
您若用
SELECT * FROM 資料表 WHERE A欄位='變數1' AND B欄位='變數2'
應該最多只有一筆, 但由於變數1,2與欄位C 看不出關係, 因此無法判斷為何會錯
您的意思是說, 用了上述的SQL Statement後, 找出來的那一筆, 欄位C的值與您親自到database中找的值不同, 但欄位A,B都與變數1,2相同嗎? 應該不會吧!?
本篇文章回覆於2002-03-20 16:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

FAQ
檢舉此回應
對就是這個樣字,我就比方說吧…
你輸入你的ID"AA"跟密碼"BB"登入後,應該顯示你的名字"使用者AB"
可是結果確顯示你的名字"使用者CD"
可是我看資料庫中"使用者CD"的ID是"CC"密碼是"DD"
真的有這樣子的事發生
都是我的會員在登入之後,自己的資料確顯示別的會員的資料
這個機率大約是萬分之一吧?
本篇文章回覆於2002-03-20 16:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

Allen
捐贈 VP 給 Allen 檢舉此回應
FAQ,
對不起, 我很難相信會有這種狀況
可否請您試著在user login時, 將 sql statement寫出來, 看看是否真的為
select * from tablename where loginid='AA' and pwd='bb'
open recordset後, 再response.write,看看3個欄位是否如您所說是錯的
本篇文章回覆於2002-03-20 17:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

好手
捐贈 VP 給 好手 檢舉此回應
Allen.......
跟你說,你不像信也得信喔!因為我有兩三次在奇摩都入我的帳號後,結果出來的不是我的而是別人帳號的內容.....信不信!厲害吧!^^"

想不到Yahoo!Kimo也會發生,而且不只一次喔!
本篇文章回覆於2002-03-20 19:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

Allen
捐贈 VP 給 Allen 檢舉此回應
好手, 
我猜 kimo 應該是用Oracle,那麼, 我更不相信會有您說的狀況, 如果是Applicatoin程式的bug,我相信, 但我想Oracle要出錯,連一億分之一的可能我都不信。
本篇文章回覆於2002-03-21 11:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

葉子
檢舉此回應
打死我都不相信會有這種事....

身為資管的我,似乎在幾年前也說過類似的話...
打死我都不念資管

-.-|||
本篇文章回覆於2002-03-21 11:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

FAQ
檢舉此回應
那我在
從Recordset.open之前到取出資料之後都加上
Application.Lock跟Application.unLock
會不會有可能解決
我之前不用是因為效能的關係,可是現在出錯
如果能解決我就要加了
本篇文章回覆於2002-03-21 11:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

Allen
捐贈 VP 給 Allen 檢舉此回應
我不相信, 但請別試著把我打死 :-)
資料庫出這種問題是非常嚴重的事, 產業界資料庫中多達數億筆記錄的並非少見, 因此我不相信, 相對地, 撰寫錯誤的程式碼來取得不正確的記錄就容易得多了, 我不是指FAQ一定是程式寫錯了, 依他的說法, 畢竟大多數的人都可以正常login, 我不清楚真正原因, 但可以查查是否是邏輯上的錯誤。
本篇文章回覆於2002-03-21 11:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

Allen
捐贈 VP 給 Allen 檢舉此回應
FAQ我想, 使用lock是沒用的, 如果只有發生在login,煩請將login page的source code寄給我看一下, 並告知您的網址, 我連上去試試
本篇文章回覆於2002-03-21 11:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

FAQ
檢舉此回應
我覺得問題應該是我的資料庫壞了吧,雖然我每次都有用壓縮與修復的功能
但好像沒有
而你提到的login的部份,就跟一般的一樣,兩個輸入框
 SQL就直接抓Request("")裡的值來判斷,沒有什麼不大一樣的

因為我還遇到一個問題,所以應該是我的資料庫壞了吧
這是其中一筆資料,就剛好是這一筆,每次都出現這個問題
明明資料庫中有這筆喔,我也去查過
asp程式大概在下面
=========
IF rs.EOF THEN
Response.write "<meta http-equiv=Content-Type content=text/html; charset=big5><script>alert('此帳號可能遭到使用者本人或系統刪除,所以無此資料');history.back()</script>"
Response.end
END IF
Response.write "資料搜尋完成,沒有問題"
==========

結果畫面顯示出"資料搜尋完成,沒有問題",應該是NOT rs.EOF了
可是馬上又跳出'此帳號可能遭到使用者本人或系統刪除,所以無此資料'的對話框
變成是符合rs.EOF的狀態
真不知在搞什麼
我有試過將資料庫移到別的主機上,一樣有這種問題
本篇文章回覆於2002-03-21 12:09
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

FAQ
檢舉此回應
而我前面提到的"資料搜尋完成,沒有問題"
程式也有將搜尋到的資料給抓出來
本篇文章回覆於2002-03-21 12:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應


檢舉此回應
IF rs.EOF THEN
Response.write "<meta http-equiv=Content-Type content=text/html; charset=big5><script>alert('此帳號可能遭到使用者本人或系統刪除,所以無此資料');history.back()</script>"
Response.end
END IF
Response.write "資料搜尋完成,沒有問題"
這一段我有些疑問....
就執行序而言....
既然已經執行到Response.write "資料搜尋完成,沒有問題"
為何又會回頭去執行rs.Eof的判斷呢????
本篇文章回覆於2002-03-21 13:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
作者回應

FAQ
檢舉此回應
對,就是奇怪在這
約一萬筆資料中,就只有這一筆SELECT出來後會這樣
所以我覺得我的ACCESS壞了
本篇文章回覆於2002-03-21 16:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
回應


檢舉此回應
問題是..今天資料庫出問題..最多也只是查出來的資料不正確或是查不到資料...
不可能會讓程式去回頭執行前面幾行吧....
這應該是程式的問題..而非資料庫的問題...
本篇文章回覆於2002-03-21 16:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
回應

lanten
檢舉此回應
介不介意把網址和那個錯的帳號密碼給我們測試~~
本篇文章回覆於2002-03-21 17:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

回覆
如要回應,請先登入.