【发布时间】:2016-06-07 23:39:24
【问题描述】:
我的网站上运行了一个简单的搜索引擎,但每次我搜索一个非常具体的术语(例如“june 7”)时,它都会显示数据库中与“june”相关的所有内容。我不知道如何让我的 PHP 搜索引擎调用数据库中的特定关键字。帮助???
这是我的代码..
<?PHP
function getmicrotime()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
//initializing connection to the database
$connection_string = dirname(__FILE__) . "/connectionstring.php";
require_once($connection_string);
//selecting table
mysql_select_db("jaguartr_logins") or die ( 'Unable to select database.' );
//max number of results on the page
$RESULTS_LIMIT=1000;
if(isset($_GET['search_term']) && isset($_GET['search_button']))
{
$search_term = $_GET['search_term'];
if(!isset($first_pos))
{
$first_pos = "0";
}
$start_search = getmicrotime();
// initializing MySQL query
$sql_query = mysql_query("SELECT * FROM news WHERE MATCH(title,article) AGAINST('$search_term')");
// additional check. Insurance method to re-search the database again in case of too many matches (too many matches cause returning of 0 results)
if($results = mysql_num_rows($sql_query) != 0)
{
$sql = "SELECT * FROM news WHERE MATCH(title,article) AGAINST('$search_term') LIMIT $first_pos, $RESULTS_LIMIT";
$sql_result_query = mysql_query($sql);
}
else
{
$sql = "SELECT * FROM news WHERE (title LIKE '%".mysql_real_escape_string($search_term)."%' OR article LIKE '%".$search_term."%') ";
$sql_query = mysql_query($sql);
$results = mysql_num_rows($sql_query);
$sql_result_query = mysql_query("SELECT * FROM news WHERE (title LIKE '%".$search_term."%' OR article LIKE '%".$search_term."%') LIMIT $first_pos, $RESULTS_LIMIT ");
}
$stop_search = getmicrotime();
//calculating the search time
$time_search = ($stop_search - $start_search);
}
?>
<?PHP
if($results != 0)
{
?>
【问题讨论】:
-
您是否对较长的搜索词有同样的问题?我的意思是,7 只是短一个字符,可以忽略。尝试更长的时间。
-
是的,如果我在搜索栏中输入“June 7”,它会拉取数据库中以“J”开头的任何内容
标签: php mysql database google-app-engine