如何使用sql更精确地搜索用户?

时间:2018-09-26 16:07:33

标签: mysql algorithm search mysqli

我有一条sql语句,用于搜索用户及其用户名。这是代码:

SELECT * FROM user_info WHERE username,name LIKE '$search%' and id!='$myId' OR MATCH (name,username) AGAINST ('$search' IN NATURAL LANGUAGE MODE) AND id!='$myId' LIMIT 10

这是怎么了? 谁能建议我一个更好,更快的搜索人的算法? 并预先感谢!

1 个答案:

答案 0 :(得分:1)

我没有要测试的MySQL,但是语法foo,bar like '...'看起来不正确。可能需要将其分解为OR。

此后,在SQL中,OR的优先级比AND低。因此A OR B AND C实际上是A OR (B AND C)的意思。因此,您的id条件不会执行您可能想要的操作。添加括号。

接下来值得怀疑的是您如何将搜索和ID坚持到SQL中。只需将内容粘贴到字符串中即可使您容易遭受SQL注入攻击,这是一个常见的安全问题。有关实际情况下注入攻击的示例,请参见https://xkcd.com/327/。查找“占位符”以了解如何做得更好。

对于更快的算法,您可能只需要索引即可。