我現在有這個權利: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