2016-07-06 154 views
0

我遇到了问题将使用搜索。我想表明它是这样,如果我没有把一个字:搜索查询无法正常工作

Not found 

和代码是这样的:

<?php 
    error_reporting(0); 

    $search = trim($_POST["search"]); 
    $search = htmlentities(htmlspecialchars($search), ENT_QUOTES); 

    $select = "SELECT * FROM articleWHERE article_title LIKE '%" . $search . "%' ORDER BY id_artikel DESC LIMIT 12"; 
    $query = mysql_query($select); 
    $num = mysql_num_rows($query); 

    if ($num > 0) { 
     while ($fetch = mysql_fetch_array($query)) { 
       echo '<div class="row">'; 
       echo ' <div class="col-md-4">'; 
       echo '  <div class="news-post standard-post2">'; 
       echo '   <div class="post-gallery">'; 
       echo '    <img src="#" alt="">'; 
       echo '    <a class="category-post world" href="#">Business</a>'; 
       echo '   </div>'; 
       echo '   <div class="post-title">'; 
       echo '    <h2><a href="#">' . $fetch["article_title"] . '</a></h2>'; 
       echo '    <ul class="post-tags">'; 
       echo '     <li><i class="fa fa-clock-o"></i>' . date("d F Y") . '</li>'; 
       echo '     <li><i class="fa fa-user"></i>by <a href="#">' . $fetch["writer"] . '</a></li>'; 
       echo '     <li><a href="#"><i class="fa fa-comments-o"></i>23</a></li>'; 
       echo '     <li><i class="fa fa-eye"></i>' . $fetch["read"] . '</li>'; 
       echo '    </ul>'; 
       echo '   </div>'; 
       echo '   <div class="post-content">'; 
       echo '    <p>' . substr(strip_tags($fetch["content"]), 0, 150) . "..." . '</p>'; 
       echo '    <a href="artikel.php" class="read-more-button"><i class="fa fa-arrow-circle-right"></i>Read More</a>'; 
       echo '   </div>'; 
       echo '  </div>'; 
       echo ' </div>'; 
       echo '</div>'; 
     } 
    } else { 
      echo '<p align="center">Not Found</p>'; 
    } 
?> 

如果我没有把一个词的搜索形式,它没有显示“未找到”。请让我知道我如何去做。

+1

看起来对我很正确。你面临的问题是什么?请不要使用'mysql_ *'函数。他们已被弃用。 –

+3

请注意此代码容易受到SQL注入攻击:http://stackoverflow.com/questions/332365/how-does-the-sql-injection-from-the-bobby-tables-xkcd-comic-work?lq = 1 –

+1

啊,你在'article'和'WHERE'之间有空格。请参阅:文章WHERE。 –

回答

0

如果我没有把一个词的搜索形式,它并没有显示“未找到”

只要改变if条件排除空:

if ($num > 0 && strlen($search) > 0) { 

可能的原因,它不显示,当你搜索%%它包括所有的行,所以它在技术上是很好的搜索。

此外,请不要使用mysql_*函数,因为它们已被弃用。切换到PDO或mysqli_*功能。请参阅Why shouldn't I use mysql_* functions in PHP?

而且您的代码非常容易受到SQL注入攻击。请参阅:How does the SQL injection from the "Bobby Tables" XKCD comic work?