【发布时间】:2012-09-07 04:10:10
【问题描述】:
我正在尝试构建一个 sql 查询来搜索我的数据库中的用户。它应该帮助用户在我的网站上找到其他用户来寻找朋友。
我做了一些研究,因为我知道我不想要:
$query = "SELECT userName, userID FROM user WHERE userID = $userName ";
因为如果他们必须输入用户的确切姓名才能找到他们,这将不是一个有效的搜索。
在做了一些研究后,我决定尝试使用前后带有 % 符号的类似术语,这样它就可以是在名称之前或之后加上数字的名称。
我在网上找到的例子是这样格式化的:
$query = "SELECT userName, userID FROM user WHERE userID Like '%{$userName}%' ";
但是当我在我的网站上执行此查询时,我遇到了返回许多结果的问题。它返回的结果不包含我的搜索词中的任何内容。
我也尝试了上面不带括号的搜索查询,因为我不明白为什么需要它们,但我得到了相同的结果。
关于如何使用上述命令查询使搜索更严格一些建议?
或者关于我应该如何搜索我的数据库以查找用户朋友的任何其他建议?
【问题讨论】:
-
您的 LIKE 子句中有用户 ID,而您要匹配的变量是 $userName。为什么会这样?它应该是 WHERE Username LIKE '%$userName%' 我不知道你为什么有在 $userName 周围使用大括号。
-
别忘了
Bobby Tables -
@techie_28 我认为您的更改会破解它。 Def 需要将其设为 userName 而不是 userID。但我仍然得到如上所述的结果。
-
% 这是通配符@Mike。如果用它包装变量,那么它将搜索一个整体。但是,如果你想从头开始搜索,那么你可以使用'$username%' .它将匹配以该用户名开头的记录,例如“mike%”将获取“mike”、“mike.tyson187”、“mike_lewis02”等。这不是你需要的吗?