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