【发布时间】:2014-01-20 20:03:52
【问题描述】:
我已经建立了一个基本的搜索引擎,它几乎可以正常工作。我在查询中使用UNION,以便在blog 和pages 两个表中搜索特定值。我也在使用 PDO 风格。一共有13行。当我使用关键字blah 执行查询时,该关键字在两个表的每一列中都可以找到。我只从 SELECT COUNT(*) FROM blog 得到 5 个结果,而从 SELECT COUNT(*) FROM pages 没有得到任何结果。此外,我正在使用存储关键字值的:searchquery => $serachquery 的准备语句,但是当回显该值时,我得到:searchquery 而不是blah。如何显示正确的结果? DEMO
PHP
<?php
include("db_con/db_con.php");
$search_output = "";
if(isset($_POST['searchquery']) && $_POST['searchquery'] != ""){
$searchquery = preg_replace('#[^a-z 0-9?!]#i', '', $_POST['searchquery']);
if($_POST['filter1'] == "All Tables"){
$sqlCommand = "(SELECT COUNT(*) FROM blog WHERE blog_title LIKE :searchquery OR blog_body LIKE :searchquery) UNION (SELECT COUNT(*) FROM pages WHERE page_title LIKE :searchquery OR page_body LIKE :searchquery) ";
}
$sql_prepare = $db_con->prepare($sqlCommand);
if($sql_prepare->execute( array("searchquery"=>'%'.$searchquery.'%') )){
$count = $sql_prepare->fetchColumn();
if($count > 1){
$search_output .= "<hr />$count results for <strong>$searchquery</strong><hr />$sqlCommand";
} else {
$search_output = "<hr />0 results for <strong>$searchquery</strong>$sqlCommand<hr />";
}
}
}
?>
HTML
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Search For:
<input name="searchquery" type="text" size="44" maxlength="88">
Within:
<select name="filter1">
<option value="All Tables">All Tables</option>
</select>
<input name="myBtn" type="submit">
【问题讨论】: