2015-05-07 53 views
0

我按照教程介紹瞭如何使搜索欄功能正常,而且我看不到我做錯了什麼。我正試圖讓用戶選擇搜索產品。最終的結果是所有東西都被當作'數組'。顯示正確的搜索結果數量。以'數組'的形式輸出搜索功能

我的搜索欄位於我的索引頁上。

<form class="searchbar" action="/searchresults" method="POST"> 
          <input class="inputsearchbar" type="text" 

    name="search" size="50"> 
           <input class="searchButton" type="submit" value="Search" name="submit"> 
          </label>  
         </form> 

然後我有一個名爲searchresults.php的頁面,我的結果輸出到這裏。我從我的數據庫中的產品表中拉出。

我有這個在文件的頂部..

if(!isset($_POST['search'])) { 
    header("Location:index.php"); 
    die($e->getMessage()); 
} 


$con = mysqli_connect("localhost", "root", "", "bfb"); 
$search_sql = "SELECT * FROM products WHERE name LIKE '%" . $_POST['search'] . "%' OR description LIKE '%" . $_POST['search'] . "%'"; 
$search_query=mysqli_query($con, $search_sql); 

    if (mysqli_num_rows($search_query)!=0) { 
    $search_rs=mysqli_fetch_assoc($search_query); 
    } 
?> 

跟該體內輸出結果...

<h1>Search Results</h1> 
<?php 

    if(mysqli_num_rows($search_query)!=0) { 
     do { ?> 
     <p><?php echo $search_rs=['name']; ?></p> 
     <p><?php echo $search_rs=['description']; ?></p> 

    <?php  } while ($search_rs=mysqli_fetch_assoc($search_query)); 
     } else { 
      echo"Sorry, no results were found. Please try again."; 
     } 
    ?> 
    </div> 

爲什麼我所有的結果顯示爲'數組',我該如何解決這個問題?

+1

與'='在'$ search_rs = [ '名']'是什麼?此外,你的代碼沒有考慮到能夠有多個結果? –

+1

[您的腳本存在SQL注入風險。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

+2

我第一次看到一個無意的PHP5.5中的數組賦值:'$ search_rs = ['name']'實際上是'$ search_rs = array('name')'...因此,您得到* Array *作爲輸出。 – CD001

回答

4

取出多餘的等號(=)

<?php echo $search_rs['name']; ?> 
+1

謹慎解釋爲什麼,只是讓未來的訪問者對這個問題也會學習;-) –

2

你必須使用$ _search_rs [ '名']。刪除多餘的'='符號。

編輯您的PHP代碼如下。

<h1>Search Results</h1> 
<?php 

if(mysqli_num_rows($search_query)!=0) { 
    do { ?> 
    <p><?php echo $search_rs['name']; ?></p> 
    <p><?php echo $search_rs['description']; ?></p> 

<?php  } while ($search_rs=mysqli_fetch_assoc($search_query)); 
    } else { 
     echo"Sorry, no results were found. Please try again."; 
    } 
?> 

+1

這應該還包括一個解釋,以便將來的訪問者能夠理解問題。 ;-) –

+0

那就是爲什麼我在答案中添加了第一行:-) – Sak90