搜索查询没有运作良好

时间:2016-07-06 17:02:44

标签: php

我遇到了使用搜索的问题。如果我没有说一句话,我想像这样展示:

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>';
     }
?>

如果我没有在搜索表单上写一个字,那么它就没有显示&#34;未找到&#34;。请让我知道我是怎么做的。

1 个答案:

答案 0 :(得分:0)

  

如果我没有在搜索表单上写一个字,那么它就没有显示&#34;未找到&#34;

只需更改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?