2013-10-13 59 views
0
<?php include "connect.php"; ?> <br /> <br /> 

<form action="" method="get"> 
    Search: <input type="text" name="search"> 
    <input type="submit"> 
</form> 

<?php 
    $get = mysqli_query($connect,"SELECT * FROM $table WHERE NAME = echo $_GET['search']"); 

    while($row = mysqli_fetch_array($get)) { 
     echo $row['NAME']." ".$row['INFO']; 
    } 
?> 

什麼即時試圖做的是,一旦用戶輸入一個名稱搜索欄,並提交它,我想搜索到數據庫中...香港專業教育學院嘗試了一切,所以請告訴我請這樣做的方法。搜索數據庫中的產品名稱

+0

你想要一個確切的搜索?情況敏感?或者你正在尋找一個'LIKE'搜索? – SnareChops

+0

你能否提出一個明確的問題?沒有人知道你想要什麼 – Sliq

回答

3

嘗試

$get = mysqli_query($connect,"SELECT * FROM TableName WHERE Name LIKE '%" . $_GET['search'] . "%'"); 

但!!!!

謹防SQL injection

我建議使用此方法:

$mysqli = new mysqli(<ServerAddress>,<DatabaseName>,<Password>,<UserName>) 
$stmt = $mysqli->prepare("SELECT col1, col2, col3 FROM TableName WHERE Name LIKE") or die($mysqli->error); 
$stmt->bind_params('s', "%" . $_GET['search'] . "%"); 
$stmt->execute() or die ($mysqli->error); 
$stmt->bind_result($Col1, $Col2, $Col3); 
while($stmt->fetch()): 
    ... 
endwhile; 

顯然有很多,多到這裏的代碼,但最終它是安全的。此外,這將列綁定到PHP變量,允許您自由使用它們。

+0

'mysqli_real_escape_string'在SQL注入方面應該是令人滿意的,儘管你的OOP方法受到鼓勵。 http://php.net/manual/en/mysqli.real-escape-string.php – zamnuts

0

如果您使用$ _GET,則應該在查詢中設置$ _GET ['search']等於變量而不是「echo」。但是,我不會在$ _GET中通過URL進行搜索,因爲它不太安全。嘗試改變形式方法「的帖子:」在後端

<form action="search.php" method="post"> 
    <label for="name">Search</label> 
    <input type="text" name="name"> 
    <input type="submit"> 
</form> 

,然後在「的search.php」文件看起來是這樣的:

<?php 
    $name = mysql_real_escape_string(strtolower($_POST['name'])); 

    $query = "SELECT * FROM $table WHERE name LIKE '%$name%'"; 
    $run = mysql_query($query); 
    $result = mysql_fetch_array($run); 

    foreach($item as $result){ 
     //echo the results how you will 
    } 
?> 
相關問題