2016-12-19 9 views
-3

ユーザーが他のユーザーを検索することができ、それが動作しますが、私は1つのユーザ名を入力する場合、ユーザ名の全てが現れて、私は私のウェブサイト上の検索バーを作成しています。探しているユーザーのみを表示する方法と、ユーザーが登録されていない場合にelseステートメントを表示する方法はありますか?PHPユーザ検索

search.php:

<?php 
include("connect.php"); 

GLOBAL $usernam; 

$output = ''; 

if(isset($_POST['Search'])) { 

if (empty($_POST["searchbar"])) { 
echo"You didn't enter anything . "; 
} else { 

$searchq = $_POST['Search']; 
$searchq = preg_replace("#[^0-9a-z]#i", "",$searchq); 

$query = mysqli_query($conn ,"SELECT * FROM users WHERE usernam LIKE '%$searchq%'") or die("Could not search"); 
$count = mysqli_num_rows($query); 

if($count == 0){ 

    echo "There was no search results . "; 

} else { 

    while($row = mysqli_fetch_array($query)) { 
     $usernam = $row['usernam']; 
     $id = $row['id']; 
     $output .= '<div>' .$usernam. '</div>'; 
    } 

    }  
} 
} 
?> 
<html> 
<head> 
<title>Interpage</title> 
</head> 
<body> 

<?php print("$output"); ?> 
</body> 
</html> 
+0

あなたは '$ searchq = $ _POST ['searchbar'];' '$ searchq = $ _POST ['Search'];'? – Sean

+0

'検索 'は私のボタンの名前です。 'searchbar'は検索バーの名前です – mrpunani

+0

正確に。 '$ search '=' '' ''(あなたのボタン)、あなたが実際にあなたと仮定します''あなたの検索バーのユーザ名からWHERE '%$ _ POST [' searchbar ']%' ''を検索してみましょう。混乱を終わらせる – Sean

答えて

2

あなたの問題はあなたが現在あなたのボタンの値を検索しているということではなく、検索バー -

$searchq = $_POST['Search']; 

あなたは

$searchq = $_POST['searchbar']; 

をしたいですあなたの質問に関して - is it secure ??。いいえそうではありません。これは、最低でHow can I prevent SQL injection in PHP?

上に読み込むのに最適な時間です、あなたはmysqli_real_escape_string()

$searchq = mysqli_real_escape_string($conn, $_POST['searchbar']); 

を使用することができますが、私は、さらに一歩進み、準備された文/プレースホルダを使用する方法については、すなわちをお勧めします。

$stmt = $conn->prepare("SELECT * FROM users WHERE usernam LIKE ?"); 
$stmt->bind_param('s', "%".$_POST['searchbar']."%"); 
$stmt->execute(); 
+0

は私がやったこの '$ searchq = mysqli_real_escape_string( $ conn、$ _POST ['searchbar']); \t $ query = mysqli_query($ conn、 "SELECT * FROM users where usernam LIKE '%$ searchq%'")または死ぬ( "検索できませんでした"); \t \t $ count = mysqli_num_rows($ query); ' – mrpunani