在有或没有空格的Mysql表中搜索关键字

时间:2013-06-28 14:17:14

标签: php mysql space

我搜索适合搜索查询的关键字。信息得到了回应。它就像一个搜索引擎。 但我似乎无法使用空格来使用数据库中的关键字。 我已经搜索了一下但似乎无法使其正常工作。

<?php

// -- Database Connection --

if (isset($_POST['search_query'])) {
$search_query = mysql_real_escape_string(htmlentities($_POST['search_query']));
echo "<div class=\"searchText\">Search</div><hr />";

//explode the search term
$search_query_x = explode(" ",$search_query);

foreach($search_query_x as $search_each) {
$x++;
if($x==1)
$construct .="keywords = '$search_each'";
}
$construct ="SELECT * FROM search WHERE $construct";
$run = mysql_query($construct);

$foundnum = mysql_num_rows($run);
if ($foundnum==0) {
echo "Sorry, there are no matching result for <b>$search_query</b>.</br></br>1. 
Try more general words.</br>2. Try different words with similar
 meaning</br>3. Please check your spelling";
} else
{
echo "$foundnum results found !<p>";
while($runrows = mysql_fetch_assoc($run))
{
$title = $runrows ['title'];
$desc = $runrows ['description'];
$url = $runrows ['url'];
echo "
<div class='width: 400px;'>
<div class='title'><a href='$url'><b>$title</b></a></div>
<div class='url'>$url</div>
<div class='desc'>$desc</div>
</div>
<br />
";
}
}
}
else
{
echo "An ERROR HAS OCCURED ...";    
}
?>

2 个答案:

答案 0 :(得分:1)

$search_query_x = explode(" ",$search_query);中,由于空格分割,你的空白区域被删除了。

你必须选择一个新的分隔符来分隔数据 - 比如逗号而不是空格。

答案 1 :(得分:0)

$search_query = mysql_real_escape_string(htmlentities($_POST['search_query']));

导致您的脚本将空格更改为与URL兼容的%20。摆脱htmlentities功能(此时并没有真正提高安全性),它应该可以正常工作。

在提供来自不安全来源的信息时,应使用Htmlentities函数。

在向用户显示信息时,请务必调用(首选)htmlspecialchars或htmlentities以防止跨站点脚本(XSS)。

在评论中也注意到您使用的是过时的功能。