为什么MySQLi搜索引擎不起作用?

时间:2014-05-09 04:10:31

标签: php mysql mysqli

我无法取消部分选项我不想要10,20,50这样的选项,所以我拿出以下代码:

 <select name="results"> 
    <option>10</option> <option>20</option> <option>50</option> </select>

mysqli_real_escape_string($db,$_GET['results'])

但是一旦我做了搜索引擎停止工作,任何人都知道为什么?

这是原始代码:

<form action="/search.php" method="GET"> 


<input type="text" name="term" size="50"> 
<select name="results"> 
<option>10</option> <option>20</option> <option>50</option> </select>
<input type="submit" value="Search">

</form>




<?php
    $db = mysqli_connect('localhost','root', '', 'searchengine');

    if(!$db) {
        die('sorry we are having some problbems');
    }

    $sql = mysqli_query(
        $db,
        sprintf(
            "SELECT * FROM searchengine WHERE pagecontent LIKE '%s' LIMIT 0,%d",
            '%'. mysqli_real_escape_string($db,$_GET['term']) .'%',
            mysqli_real_escape_string($db,$_GET['results'])
        )
    );

    while($ser = mysqli_fetch_array($sql)) {
        echo "<h2><a href='$ser[pageurl]'>$ser[pageurl]</a></h2>";
    }

    mysqli_close($db);

?>

1 个答案:

答案 0 :(得分:2)

如果您删除了完全您删除的内容,那么删除mysqli_real_escape_string($db,$_GET['results'])声明会使您的查询无效。

要让它再次运行,您需要修改您的查询:

$sql = mysqli_query(
        $db,
        sprintf(
            "SELECT * FROM searchengine WHERE pagecontent LIKE '%s' LIMIT 0,20",
            '%'. mysqli_real_escape_string($db,$_GET['term']) .'%'
        )
    );

确保您的LIMIT符合您的喜好,因为您已经从代码中删除了该选项,因此您无法在运行时更改它。