2016-07-06 149 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?