用于mySQL数据库的PHP搜索脚本,只有3个字母工作

时间:2013-08-12 12:38:11

标签: php mysql search

我正在尝试对mySQL数据库进行php搜索。下面的代码很有趣,当我只输入3个字母时,它检测得非常好。例如,我有一个产品名称'deepbluehealth omega',如果我输入'ome',它会被选中,如果我输入“ega”它就会拾起,如果我键入'omega'没有显示结果,如果我输入'deepbluehealth'它也没有问题。

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
$search_output = "";
if(isset($_POST['searchquery']) && $_POST['searchquery'] != ""){
    $searchquery = $_POST['searchquery'];
    if($_POST['filter1'] == "Whole Site"){
    $sqlCommand = "(SELECT id, product_name FROM products WHERE product_name LIKE '%$searchquery%' OR details LIKE '%$searchquery%') ";
    } 
    require_once("storescripts/connect_to_mysqli.php");
    $query = mysqli_query($myConnection,$sqlCommand) or die(mysqli_error($myConnection));
    $count = mysqli_num_rows($query);
    if($count > 1){
        $search_output .= "<hr />$count results for <strong>$searchquery</strong><hr />$sqlCommand<hr />";
        while($row = mysqli_fetch_array($query)){
                $id=$row["id"];
            $product_name = $row["product_name"];
                    $details= $row["details"];
                $category=$row["category"];
                $subcategory=$row["subcategory"];
            $search_output .= "ID: $id <br/> Name: $product_name -<br/>$details<br />$category<br/>$subcategory<br/>
<a href='product.php?id=$id'>link</a><br/>

";
        } // close while
    } else {
        $search_output = "<hr />0 results for <strong>$searchquery</strong><hr />$sqlCommand";
    }
}
?>
<html>
<head>
</head>
<body>
<h2>Search the Exercise Tables</h2>
<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="Whole Site">Whole Site</option>

</select>
<input name="myBtn" type="submit">
<br />
</form>
<div>
<?php echo $search_output; ?>
</div>
</body>
</html>

2 个答案:

答案 0 :(得分:3)

这是你的问题:

if($count > 1){

这需要:

if($count > 0){

考虑到只有一个结果的情况。可能这是唯一与“欧米茄”相匹配的产品,但在其他情况下,另一种产品恰好匹配。

答案 1 :(得分:1)

我不能在代码的基础上解释的好随机功能,你能给我们表结构/带索引和一些示例数据吗?

额外提示

如果您想要发布到同一页面,请不要使用$ _SERVER ['PHP_SELF'],因为现在可能发生的跨侧脚本攻击,或者应该使用

<form action="" method="post">

是的,您应该将操作留空

当您通过函数htmlentities回显时,运行$ search_output以对抗大多数跨侧脚本攻击。