2017-05-31 66 views
0

我試圖讓php代碼搜索數據庫並返回所有匹配的「park_name」,但它表示搜索變量是未定義的,並且也僅從數據庫返回一個公園。 這是我對搜索代碼:爲什麼我的搜索工作不正常?

<form method="post" action="Search_page.php" name="search" id="Search"> 
<label for="search">Search:</label><input type="text" name="Search" id="search" /> 
<input type="submit" name="submit" value="Search"/> 
</form> 
<?php 
if(isset($_POST['search'])){ 
$search = $_POST['search']; 
$search = preg_replace("#[^0-9a-z]i#","", $search); } 
$sql="SELECT Park_name, street FROM park_list WHERE park_name LIKE '%$search%'"; 
//query db 
$result = $db->query($sql); 
?> 
</div> 
<?php while ($row = $result->fetch_assoc()) { ?> 
<div class="results"> 
<h2><?php echo $row['Park_name']?></h2> </br> 
<p><?php echo $row['street']?></p> 
</div> 
<?php } ?> 
+2

'Search' =='search' – Ghost

+1

儘量打斷你的字符串和CONCAT!或者像這樣添加{}:''%{$ search}%'「 – Xenofexs

+0

[Little Bobby](http://bobby-tables.com/)說*** [您的腳本存在SQL注入攻擊風險。] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)***。即使[轉義字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! –

回答

4

因爲,Search!= search

錯誤報告也告訴你。

  • 順便說一句,!=是邏輯運算符爲 「不等於」 ;-)

那些是大小寫敏感的。

順便說一下;如果你想保存/保存你的數據庫,請自己幫忙,並使用準備好的語句。

併爲您的查詢錯誤,應該失敗使用mysqli_error($db)

您還使用一個名稱屬性在這裏結合具有相同名稱的POST數組:

<form method="post" action="Search_page.php" name="search" id="Search"> 
              ^^^^^^^^^^^^^ 
              Remove that^

,併爲輸入name="search"重命名name="Search"

你認爲哪裏會出現,哪些不會。您的搜索依賴於輸入的名稱屬性(和輸入本身)。表單通常不使用名稱屬性。

  • 您需要將其刪除。

邊注:這是不是isset()通常最好使用!empty() <(不爲空),用於用戶輸入。後者主要用於無線電/複選框/提交輸入。

+0

這很有幫助,但結果部分只顯示一個結果,並且在我搜索之前顯示,你知道我該如何解決這個問題嗎? –

1

表單字段名稱是區分大小寫的。

你的第二個行更改爲

<label for="search">Search:</label><input type="text" name="search" id="search" /> 
0

我還沒有發表評論,但是Park_name應該是小寫字母。 你必須在SQL語句中不一致的情況:

$sql="SELECT Park_name, street FROM park_list WHERE park_name LIKE '%$search%'"; 
+0

'Park_name'?那是列名。 – Akintunde007

+1

在查詢中的列名和大部分時間不區分大小寫,並且只會依賴於數據庫的排序規則,只有在循環中它們纔會是 –

+0

[Little Bobby](http://bobby-tables.com/)表示*** [你的腳本存在SQL注入攻擊風險。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)***。即使[轉義字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! –