2017-03-19 71 views
0

我在表中的兩個coulms一個是名字和姓氏,和我有搜索一個輸入,如果我搜索全名與名字和姓氏,然後導致無法使用 here is database structure匹配的搜索結果兩次與一個輸入欄

輸入代碼

<form class="form-inline" action="searchfrnd.php" method="GET"> 

      <input style="margin-top:20px;" type="search" class="form-control" name="frnd_search" placeholder="Search your Friends"> 

      </form> 

和PHP代碼是

$frnd_name=$_GET['frnd_search']; 

$sql="select name,lastname,username,email from user where name='$frnd_name' or lastname='$frnd_name' or username='$frnd_name' "; 
$result = $conn->query($sql); 
if ($result->num_rows > 0) { 
while($row = $result->fetch_assoc()) { 
echo "".$row['name']." ".$row['lastname']."<br>"; }} 
+0

嘗試在sql中添加括號,例如name ='{$ frnd_name}',讓我知道問題是否仍然存在。 – arisalsaila

+0

仍然無效 – kartik

回答

0

嘗試此查詢:

SELECT 
    name, lastname, username, email 
FROM 
    user 
WHERE 
    CONCAT('%',name,'%') LIKE '$frnd_name' OR 
    CONCAT('%',lastname,'%') LIKE '$frnd_name' OR 
    CONCAT('%',username,'%') LIKE '$frnd_name' 

它會尋找name,在表單輸入lastnameusername。這遠非完美,而是做你想做的事情。

請不要忘記你的代碼的安全性,它是不存在的。

+0

現在沒有顯示任何搜索結果。不工作 – kartik

0
$frnd_name = trim(preg_replace("/[ ]+/", " ", $_GET['frnd_search'])); 
$arr = explode(" ", $frnd_name, 2); 
if(!empty($arr[1])) 
    $sql_where = "name LIKE '%".$arr[0]."%' AND lastname LIKE '%".$arr[1]."%'"; 
else 
    $sql_where = "name LIKE '%".$arr[0]."%' OR lastname LIKE '%".$arr[0]."%'"; 
$sql = "SELECT name,lastname,username,email FROM user WHERE ".$sql_where; 
$result = $conn->query($sql); 
if ($result->num_rows > 0) { 
while($row = $result->fetch_assoc()) { 
echo "".$row['name']." ".$row['lastname']."<br>"; }} 
+0

是的,它的工作,但有問題,如果我鍵入「manoj kumar」,然後搜索其與「kumar」和「結果顯示kartik kumar,然後manoj kumar相匹配的演出數據,我想先顯示結果是搜索 – kartik

+0

所以你想要的時候搜索字符串是「manoj kumar」結果應該與firstname/name = manoj(不是kumar)和lastname = kumar(不是manoj)匹配。是這樣嗎? – Hossam

+0

是的......我想...... ... – kartik

相關問題