2016-08-16 83 views
-1

我是編程界的新手,我正在開發一款具有搜索功能的應用程序。 我的問題是,以下代碼無法從數據庫輸出搜索數據。 我正在使用require_once命令通過header.php爲我的數據庫連接插入這個輸出。搜索引擎問題 - 無法輸出

請幫忙。

<!DOCTYPE html> 
 
<html lang=""> 
 

 
<?php require_once('Include/Top.php');?> 
 

 
<body> 
 
    <?php require_once('Include/header.php'); ?> 
 
<centre> 
 
      <div class="searchboxsearch"> 
 
       <div class="row"> 
 
        <div class="col-xs-12"> 
 
         <br><br><br><br> 
 
         <form action="" method="get"> 
 
         <div class="form-group"> 
 
           <input type="text" id="usermame" class="form-control" name="username" placeholder="Search a Name"> 
 
         </div> 
 
         <input type="submit" name="submit" class="btn btn-primary" value="Search"> 
 
         </form> 
 
        </div> 
 
       </div> 
 
      </div>     
 
        <?php 
 
        
 
        $sname = $_GET['username']; 
 
        $terms = explode(" ", $sname); 
 
        
 
        
 
        foreach ($terms as $each) 
 
        { 
 
         $i++; 
 
         if ($i == 1) 
 
          $query .= "keywords LIKE '%$each%'"; 
 
         else 
 
          $query .= "keywords LIKE '%$each%'"; 
 
        } 
 
        $query = "SELECT * FROM feedback WHERE $query"; 
 

 
        $srun = mysqli_query($connection, $query); 
 

 
         if (mysqli_num_rows($srun) > 0) 
 
          { 
 
           while($row = mysqli_fetch_assoc($srun)) 
 
           { 
 
            $name =ucfirst($row['fullname']); 
 
            $date =$row['date']; 
 
            $feedback = $row['feedback']; 
 
            
 
            echo "<h3> $name</a></h3> 
 
            $feedback <br /> $stdate"; 
 
           } 
 
          
 
         }else 
 
          { 
 
           echo " No result found"; 
 
          } 
 
      ?> 
 

 
</centre> 
 
<?php require_once('Include/footer.php'); ?> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 
 
</body> 
 
</html>

三江源

KP

+0

什麼是您收到的錯誤? – MuthaFury

+0

是否在其他包含文件中連接了您的數據庫?如果這樣向我們顯示代碼或給我們一個錯誤你正在得到什麼 –

+0

你的代碼很容易受到SQL注入的影響。只需設想一個用戶名,如''; DROP \t表\t反饋;'(注意防止通過簡單空間分割的標籤) –

回答

1

你的循環不是建立有效的SQL,如果你有一個以上的搜索詞,您需要添加AND或等之間子句,當然還有一個空間。

foreach ($terms as $each) 
{ 
    $i++; 
    if ($i == 1) 
     $query .= "keywords LIKE '%$each%'"; 
    else 
     $query .= " OR keywords LIKE '%$each%'"; 
} 

$query = "SELECT * FROM feedback WHERE $query"; 
$srun = mysqli_query($connection, $query); 


// in future add a test after issuing any query to the database 
// and echo the error, the messages are normally self explanatory 
if ($query === false) { 
    echo mysqli_error($connection);   
    exit; 
} 

但是你的腳本是在SQL Injection Attack 風險有一個看看發生了什麼事Little Bobby Tables即使 if you are escaping inputs, its not safe! 使用prepared statement and parameterized statements

+0

嗨RiggsFolly,感謝您查看代碼,我仍然無法輸出結果,但我認爲我必須在查詢中丟失或發生新秀錯誤。另外,謝謝你提醒我SQL注入攻擊。我正在閱讀並正在爲此編寫代碼。 同時,有什麼你看到爲什麼我的代碼不會產生數據庫結果? 我的數據庫通過header.php連接,$ connection是數據庫連接的輸出。 任何幫助表示讚賞。 –