我有一些搜索功能,允许用户从下拉列表中选择一个名称,或者在搜索字段中输入一个人名或其中的一部分(通配符功能)。
我遇到的问题是,如果使用下拉选项,则搜索字段将不会出现,反之亦然。
我尝试了如下一些 SQL(请注意变量代表通过表单发送的数据):
SELECT id, name, age FROM player
WHERE player.id = '$id'
OR player.name LIKE '%$text%'
使用上述内容时,通配符功能可以正常工作。
但是,如果您从下拉列表中选择一个玩家,则它会返回所有玩家。这是因为 for 的值$text
是空的(空)并且 LIKE '%%' 表示选择所有内容,因此它会选择所有名称。
然后我尝试了以下方法:
SELECT id, name, age FROM player
WHERE player.id = '$id'
AND player.name LIKE '%$text%'
现在下拉功能按预期工作,但通配符搜索不起作用。这是因为我假设 AND 要求两个语句都为真,并且因为$id
当只指定通配符条目时什么都没有(空),条件永远不会为真。
任何人都可以帮助我使用一些 sql 以确保下拉列表和通配符搜索彼此隔离工作吗?
提前感谢您的时间和帮助。