我现在有这个权利:PHP:搜索正确
if(isset($_POST["search"]) && !empty($_POST["search"])) {
$full_name = mysql_real_escape_string($_POST["search"]);
$sex = mysql_real_escape_string($_POST["sex"]);
list($firstname, $lastname) = array_map('ucfirst', explode(' ', $full_name));
$query = "SELECT firstname, lastname, id, user_name, sex, last_access, bostadsort FROM users WHERE (firstname LIKE '$firstname' OR lastname LIKE '$lastname') AND sex = '$sex'";
$result1 = mysql_query($query) or die(mysql_error());
$count = mysql_num_rows($result1);
while($get = mysql_fetch_array ($result1)){
echo $get["firstname"] . " " .$get["lastname"]."<br>";
}
}
这是我的搜索查询。现在该表格被称为“搜索全名”。你输入,然后分成$ firstname,$ lastname。
工程很好,没问题。
虽然如果你只输入一个用户的LASTNAME,因为也许你不记得用户的名字,那么这段代码会把它当作firstname,因为所有在空格之前都是firstname(list()行)它以$ firstname命名并且不会导致任何结果,因为这个姓氏没有名字。
我该如何解决这个问题?如果你通过名字搜索,它也可以正常工作,也可以使用全名,但不只是姓氏。任何智能解决方案
个人而言,我会重构整个事物并使用两个输入字段,每个字段对应一个名称。如果一个人输入三个单词,则不知道中间单词是名字,姓氏还是中间名的一部分。在当前实现中,您可能需要考虑添加限制= 2,修剪空白并检查多个连续空格。 – Matthew 2010-09-29 17:13:16
我应该在哪里修剪白色空间。我从你的答案中增加了限制。我知道这与输入三个字,但我的网站是没有中间名,只有第一个姓氏 – Johnson 2010-09-29 18:43:02