我有一个用户界面,用户可以输入一个人的名字和姓氏。
只要在搜索框中不输入任何内容,就不会找到用户。但只要我输入一个空格,数据库中的每个用户都会返回。我修剪输入字符串并检查空白:
if (isset($_GET['lastname'])) {
$lastname_value = trim($_GET['lastname']);
//This Line is only used for setting the Text again in the Search Box
$tpl->setVariable('ss-search-lastname-value', $lastname_value);
}
if(isset($_GET['firstname'])) {
$firstname_value = trim($_GET['firstname']);
$tpl->setVariable('ss-search-firstname-value',$firstname_value);
}
之后,我编写搜索查询:
$sql = "SELECT e.`user_id`, e.`firstname`, e.`lastname`, e.`email`
FROM `employees` as e
WHERE 1";
if($lastname_value!="") {
$sql .=" AND e.`lastname` ='$lastname_value'";
}
if($firstname_value!="") {
$sql .=" AND e.`firstname` ='$firstname_value'";
}
普通搜索返回具有正确名字和姓氏的预期用户,如果不输入任何内容并开始搜索,则不返回任何结果。但是搜索框中只有一个空格,我得到所有用户。我该怎么解决?
最佳答案
您需要首先决定是否要搜索:
$doSearch = false;
$hasLastname = $lastname_value != "";
$hasFirstname = $firstname_value != "";
$doSearch = $hasLastname || $hasFirstname;
if ($doSearch)
{
$sql = "SELECT e.`user_id`, e.`firstname`, e.`lastname`, e.`email`
FROM `employees` as e
WHERE 1";
if($lastname_value!="") {
$sql .=" AND e.`lastname` ='$lastname_value'";
}
if($firstname_value!="") {
$sql .=" AND e.`lastname` ='$firstname_value'";
}
...
}
关于php - 无法过滤空格,查询返回所有用户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7441163/