PHP搜索表单仅测试数据库的最后一行

时间:2017-05-31 11:18:58

标签: php mysql search

我正在尝试为网站创建搜索工具。该网站包含文本帖子,因此数据库有一个表post_record,其中包含字段post_id,post_title,post_href和post_content。

现在工作是当用户在搜索字段中输入任何搜索关键字时,该关键字正在针对所有帖子标题和帖子内容进行测试,并且匹配它应该返回所有这些行。以下是它的代码。问题是它只返回数据库的最后一行。

<table class="s_table">
<?php
require_once'config.php';

if(isset($_POST['search_btn']))
{
    $mes = " ";
    $search_key =" ";
    $search_key = ($_POST['search_field']);
    try
    {
        if(empty($search_key) && $search_key != " ")
        {
            echo $mes = "Enter the keyword you want to search.";
        }
        else
        {               
            $result = $conn->prepare("SELECT * FROM post_record WHERE post_title LIKE '%".$search_key."%' OR post_content LIKE '%".$search_key."%'");
            $result->execute();
            $count=$result->rowCount();
            $datas = $result->fetchAll();
            if(!$count)
            {
                echo $mes = "No Result found. Try another keyword for search.";
            }
            else
            {
                foreach ($datas as $data)                                           
                {
                echo "
                    <tr><td><b><u><a href='".$data['post_href']."'>".$data['post_title']."</a></b></u></td></tr><br>
                    <tr><td class='s_cont'>".$data['post_content']."</tr></td><br><br>";

                }
            }
        }
    }
    catch(PDOException $e)
    {
        $mes = "Something Went Wrong! try again";
        header("location:index.php");
    }
}

$conn = null;

&GT?;

除了只显示数据库的最后一行之外,一切正常。

现在数据库有3个帖子,为了测试目的,我尝试了一个关键字,我知道在所有帖子内容中都很常见,但它不起作用。只有最后一行数据库被提取和测试。

2 个答案:

答案 0 :(得分:0)

if(empty($search_key) && $search_key != " ")这种情况是错误的 两者都是不同的东西,永远不会成真。 你正在测试它是否为空,然后你测试它是否为空 两者都处于相同的条件

答案 1 :(得分:0)

我通常使用过程函数,但我遇到mysqi_fetch_array()这样的问题,所以你的问题可能是fetchAll()正在将光标移动到最后一条记录。尝试删除该功能或在mysql_data_seek($datas , 0)之前使用foreach()