我甚至不确定这是否可行(我是php新手)
无论如何,我想做的是:
mysql_query("SELECT * FROM user_table WHERE concat(username,'@',domain)='$username' LIMIT=1");
好的,所以$ username是一个用户提交的电子邮件地址,用于搜索数据库以检查它们是否存在。在user_table中,用户名不存储在单个列中,它们存储在多个域中,并且实际的用户名是独立的。
例如用户名可以是bob,域名可以是website.com.au
然后,当用户想要在bob@website.com.au
中搜索该用户时这是针对上面的查询。
那么,它应该工作吗?如果不能,我怎么能做这项工作或者你对我有什么建议?
答案 0 :(得分:0)
正如BobbyJack所提到的,这是一种定位用户记录的缓慢方法。
如果您无法在单个列中存储电子邮件地址并在该列上放置索引,请在PHP中拆分字符串并进行查询:
SELECT * FROM user_table WHERE `username` = '$username' AND `domain` = '$domain'
然后,您可以创建一个结合域名+用户名的唯一索引,这样您就不需要LIMIT 1
答案 1 :(得分:0)
可能措辞略有错误。
无论如何,这就是我所做的"SELECT * FROM virtual_user WHERE concat_ws('@',username,domain)='$username'"
我不再需要使用LIMIT = 1,我可能永远不需要,因为表中的所有结果都是单独的,所以它总是只返回1的限制或者根本没有。
在我看来这并不慢,但我再也不确定要将它与之比较。我们有大约7000多条记录,所以是的。无论如何都要告诉你查询需要多长时间才能完成?
我想将用户名和域都放在一个索引字段中,但它用于后缀邮件服务器,我不允许或游戏使用它使用的查询。特别是在实际处理邮件的功能正常的服务器上。