你好我有2个文本框,我想给用户提供选择一个以便查找结果的选项。用户可以搜索id或名称。我的问题是因为我使用LIKE%field%
当用户选择搜索id时,name字段保持为空并返回所有表行。我希望只有当用户在文本框中输入一些值时才能得到结果。这是我的SQL查询。我使用的是mysql
"SELECT * FROM properties WHERE ID='$id' OR Name LIKE '%$name%'"
谢谢大家
答案 0 :(得分:3)
如果用户必须选择要搜索的字段,您可以执行以下操作:
if ($_POST['search'] == 'id') {
$sql = "SELECT * FROM properties WHERE ID='$id'"
} else {
$sql = "SELECT * FROM properties WHERE Name LIKE '%$name%'"
}
答案 1 :(得分:0)
您可以在单个查询中执行此操作(从查询本身检查值):
"SELECT * FROM properties WHERE ('$id'='' OR ID='$id') AND ('$name' ='' OR Name LIKE '%$name%')"
<强>解释强>
第一个条件:
仅当 ID='$id'
不为空时,查询才会选择$id
的记录。
如果$id
为空,则查询不会用于第二部分ID='$id'
第二个条件:
仅当 Name LIKE '%$name%'
不为空时,查询才会使用$name
过滤记录。
如果$name
为空,则查询不会转到Name LIKE '%$name%'
。
NB:当您需要检查众多参数时,此技术非常有用,而不是在php端使用一堆if...else
。