我正在尝试为网站创建搜索工具。该网站包含文本帖子,因此数据库有一个表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个帖子,为了测试目的,我尝试了一个关键字,我知道在所有帖子内容中都很常见,但它不起作用。只有最后一行数据库被提取和测试。
答案 0 :(得分:0)
if(empty($search_key) && $search_key != " ")
这种情况是错误的
两者都是不同的东西,永远不会成真。
你正在测试它是否为空,然后你测试它是否为空
两者都处于相同的条件
答案 1 :(得分:0)
我通常使用过程函数,但我遇到mysqi_fetch_array()
这样的问题,所以你的问题可能是fetchAll()
正在将光标移动到最后一条记录。尝试删除该功能或在mysql_data_seek($datas , 0)
之前使用foreach()
。