使用PHP搜索显示所有数据库数据

使用PHP搜索显示所有数据库数据,php,database,search,Php,Database,Search,我正试图从数据库中搜索一些数据。搜索工作正常,但是如果我单击搜索而不在表单中输入任何内容,它会显示数据库中的所有数据。反正我能解决这个问题 这是我的php代码 $link=mysqli_connect("localhost","root",""); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $db_

我正试图从数据库中搜索一些数据。搜索工作正常,但是如果我单击搜索而不在表单中输入任何内容,它会显示数据库中的所有数据。反正我能解决这个问题

这是我的php代码

$link=mysqli_connect("localhost","root","");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$db_selected = mysqli_select_db($link,"AnimalTracker1");

if (!$db_selected)
  {
  die ("Can\'t use test_db : " . mysqli_error($link));
  }
$searchKeyword = $_POST['find']; // Sanitize this value first !!
   $sql=mysqli_query($link, "Select * FROM Locations WHERE `Animal_Type` LIKE '%$searchKeyword%' ");



if ($sql == FALSE)
{
  die($sql." Error on query: ".mysqli_error($link)); 
 }

while($result = mysqli_fetch_array($sql))
{
echo  $result ['Animal_Type'];
echo "<br>";
echo $result ['Latitude'];
echo "<br> ";
echo $result ['Longitude'];
echo " <br>";
echo $result ['Seen'];
echo " <br> ";
echo $result ['Time'];
echo "<br> ";
echo "<br> ";
}
//}
?>
$link=mysqli_connect(“本地主机”、“根目录”、“根目录”);
//检查连接
if(mysqli\u connect\u errno())
{
echo“未能连接到MySQL:”.mysqli_connect_error();
}
$db_selected=mysqli_select_db($link,“AnimalTracker1”);
如果(!$db_选中)
{
die(“无法使用测试数据库:”.mysqli_错误($link));
}
$searchKeyword=$_POST['find'];//首先清理此值!!
$sql=mysqli_query($link,“Select*FROM'Animal_Type`类似“%$searchKeyword%”的位置);
如果($sql==FALSE)
{
die($sql.“查询错误:”.mysqli_Error($link));
}
而($result=mysqli\u fetch\u数组($sql))
{
echo$result['Animal_Type'];
回声“
”; echo$result['Latitude']; 回声“
”; echo$result[‘经度’]; 回声“
”; echo$result['Seen']; 回声“
”; echo$result['Time']; 回声“
”; 回声“
”; } //} ?>
只需确保$searchKeyword有一个(有效)值

$link=mysqli_connect(“本地主机”、“根目录”、“根目录”);
//检查连接
if(mysqli\u connect\u errno())
{
echo“未能连接到MySQL:”.mysqli_connect_error();
}
$db_selected=mysqli_select_db($link,“AnimalTracker1”);
如果(!$db_选中)
{
die(“无法使用测试数据库:”.mysqli_错误($link));
}
//检查是否实际设置了$_POST['find']。
如果(数组\键\存在('find',$\ POST))
{
$searchKeyword=$\u POST['find'];//首先清除此值!!
//在此处清理$searchKeyword
}
//检查$searchKeyword是否没有值,或者只是包含空白
if(空(修剪($searchKeyword)))
{
echo“您必须输入搜索词”;
} 
其他的
{
$sql=mysqli_query($link,“Select*FROM'Animal_Type`类似“%$searchKeyword%”的位置);
如果($sql==FALSE)
{
die($sql.“查询错误:”.mysqli_Error($link));
}
而($result=mysqli\u fetch\u数组($sql))
{
echo$result['Animal_Type'];
回声“
”; echo$result['Latitude']; 回声“
”; echo$result[‘经度’]; 回声“
”; echo$result['Seen']; 回声“
”; echo$result['Time']; 回声“
”; 回声“
”; } } ?>
尝试删除查询中$searchKeyword后面或前面的“%”,我想这应该可以解决问题。
当匹配全部或无时使用“%”。因此,如果您发送一个空字符串,它将返回整个数据库。

u可以在执行查询之前检查$searchKeyword是否为空。这样做客户端/服务器端。抱歉。我把代码修改得更严格了,给它一个shot.syntax错误,意外的“{”这是我再次遇到的错误。似乎找不到括号丢失的地方。你能解释一下你在那里做了什么吗?通过添加
如果(数组\u key\u存在('find',$\u POST))
我已确保只有在数据库提交中定义了“find”时才设置$searchKeyword。通过将子句
if(empty(trim($searchKeyword))
放入其中,我已在$seachKeyword为空(即
未定义的
NULL
0
(空字符串)时设置了代码分支或
false
)。使用trim on($searchKeyword)可删除任何前导或尾随空格,这意味着字符串
'
将转换为
'
,该字符串为空。希望对您有所帮助!
$link=mysqli_connect("localhost","root","");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$db_selected = mysqli_select_db($link,"AnimalTracker1");

if (!$db_selected)
  {
  die ("Can\'t use test_db : " . mysqli_error($link));
  }
// checks to see if $_POST['find'] is actually set.
if ( array_key_exists('find',$_POST) )
{
    $searchKeyword = $_POST['find']; // Sanitize this value first !!

   // sanitize $searchKeyword here

}

// checks to see if $searchKeyword has no value, or just contains empty space
if ( empty(trim($searchKeyword)) )
{
    echo "You must enter a search term";
} 
else
{
   $sql=mysqli_query($link, "Select * FROM Locations WHERE `Animal_Type` LIKE '%$searchKeyword%' ");

  if ($sql == FALSE)
  {
    die($sql." Error on query: ".mysqli_error($link)); 
  }

  while($result = mysqli_fetch_array($sql))
  {
    echo  $result ['Animal_Type'];
    echo "<br>";
    echo $result ['Latitude'];
    echo "<br> ";
    echo $result ['Longitude'];
    echo " <br>";
    echo $result ['Seen'];
    echo " <br> ";
    echo $result ['Time'];
    echo "<br> ";
    echo "<br> ";
  }
}
?>