我有如下用户输入/登录:
login:- write('username: '), read(User), nl, write('password: '), read(Pass).
我有一个包含用户名和密码的数据库。我使用 find 谓词将所有行作为列表获取,如代码所示:
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')].
有没有办法使用来自 read() 的用户输入并检查该用户是否在数据库中?
我试过member(User, R)但它不能正常工作。
我知道 prolog 不是这种东西(登录/注册)的最佳语言。我这样做的原因是我正在 swi-prolog 中开发 helath 护理专家系统,我需要为患者登录和注册。
为什么可以这样做?我是 prolog 的新手,所以我陷入了很多愚蠢的事情。
谢谢!
............. @gusbro我尝试了member(row(User)正如你告诉我的那样:
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.