SQL" LIKE"如果为空则返回所有行

时间:2014-04-25 17:40:31

标签: php mysql sql

你好我有2个文本框,我想给用户提供选择一个以便查找结果的选项。用户可以搜索id或名称。我的问题是因为我使用LIKE%field%当用户选择搜索id时,name字段保持为空并返回所有表行。我希望只有当用户在文本框中输入一些值时才能得到结果。这是我的SQL查询。我使用的是mysql

"SELECT * FROM properties WHERE ID='$id' OR Name LIKE '%$name%'"

谢谢大家

2 个答案:

答案 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%')"

<强>解释

  1. 第一个条件:

    仅当 ID='$id'不为空时,查询才会选择$id 的记录。 如果$id为空,则查询不会用于第二部分ID='$id'

  2. 第二个条件:

    仅当 Name LIKE '%$name%'不为空时,查询才会使用$name 过滤记录。 如果$name为空,则查询不会转到Name LIKE '%$name%'

  3. NB:当您需要检查众多参数时,此技术非常有用,而不是在php端使用一堆if...else