2016-08-16 64 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是数据库连接的输出。 任何帮助表示赞赏。 –