2013-01-06 64 views
0

我剛剛在PHP中創建了一個非常簡單的搜索功能,但我遇到了一些問題。搜索功能將查詢發送到數據庫並打印結果,但它不打印我想要的結果。它應該打印那些類似於用戶輸入的記錄,但它只是打印每個記錄。PHP搜索功能打印所有記錄,而不是那些搜索的

我的格式如下:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
    <input type="text" name="name"> 
    <input type="submit" name="submit" value="Search"> 
</form> 

而且PHP代碼,使搜索是:

if(isset($_POST['submit'])) 
    { 
    require ('mysqli_connect.php'); 
    include ('config.php'); 

    $term = $_POST['term']; 
     $q = "SELECT name, producer, jamtypes, user FROM Jam WHERE name LIKE '%" . $term . "%'"; 
     $sql = @mysqli_query ($dbc, $q); 

    while ($row = mysqli_fetch_array($sql)){ 

     echo "<br />"; 
     echo 'Name: '.$row['name']; 
     echo '<br/> Producer: '.$row['producer']; 
     echo '<br/> Created By: '.$row['user']; 
     echo '<br/> Category: '.$row['jamtypes']; 
     echo '<br/>'; 

     } 
    } 

謝謝你們

+6

你對sql注入很開放 –

+5

'echo $ q;'你想要什麼?在你的表單中沒有「term」,也許你想要「name」 – 2013-01-06 22:13:17

+1

John是正確的世界,你應該清理你的數據庫輸入。 Mysqli提供了準備好的語句來幫助這[http://php.net/manual/en/mysqli.quickstart.prepared-statements.php]http://php.net/manual/en/mysqli.quickstart.prepared-statements。 php – djthoms

回答

2

你的表單字段是name,不term,所以你的PHP應該是

$term = $_POST['name']; 

因爲$term由於值不正確而爲空,您的查詢將返回所有結果。 (您的查詢看起來像SELECT name, producer, jamtypes, user FROM Jam WHERE name LIKE '%&'

僅供參考,開啓了error_reporting並且報告通知會告訴您這一點。始終開發錯誤報告並顯示所有錯誤。

+0

謝謝!真的很簡單,愚蠢的錯誤。我以前在我的表單中有過術語,但是拿出來重新做了php。應該有錯誤檢查它,並且將來會做。再次歡呼。 – Bic1245