1
我有用戶輸入/登錄如下:SWI-序言用戶登錄和註冊
login:- write('username: '), read(User), nl, write('password: '), read(Pass).
和我有用戶名和密碼的數據庫。我用找到謂詞來獲取所有行作爲一個列表類似代碼所示:
find(R):-findall(Row, rs('SELECT name FROM patient where name=\'James\'', Row), R).
?- find(R).
R = [row('James'), row('James'), row('James'), row('James')].
有沒有使用來自讀取用戶輸入(),並檢查該用戶在數據庫的方法嗎?
我試過會員(用戶,R)但它工作不正常。
我知道prolog不是這類東西(登錄/註冊)的最佳語言。我之所以這樣做,是因爲我正在使用swi-prolog中的helath護理專家系統,我需要登錄和註冊病人。
有沒有一個爲什麼這可以做到?我對prolog很陌生,所以我會陷入很多愚蠢的事情中。
謝謝!
............. @gusbro我試着用成員(行(用戶),你告訴我:
check:-findall(Row, rs('SELECT name FROM patient where name=\'James\'', Row), R),
read(User), member(row(User), R);
write('wrong username!').
但我總是得到相同的,無論我寫的東西:
?- check.
|: Bla.
true ;
wrong username!
true.
?- check.
|: James.
true ;
wrong username!
true.
感謝您的幫助,您有任何其他想法嗎?因爲這不適用於我:( – user1598696 2012-08-17 16:59:40
)如果您輸入的名字以大寫字母開頭,則必須用單引號括起來,例如'|:'James'.'。另外,閱讀規則時請注意,回溯時最終告訴你'錯誤的用戶名' – gusbro 2012-08-17 17:17:38
aaa是的,我忘記了引號,它現在正在工作,非常感謝! – user1598696 2012-08-17 17:30:33