我的网站搜索没有回应任何结果

时间:2017-01-07 09:19:35

标签: php mysql

我已经进行了网站搜索,它没有回应任何结果,但它显示了有多少结果

这是代码:

<?php
$db = new mysqli('localhost','root','root','search');
if (isset($_GET['input'])) {
    $keywords = $db->escape_string($_GET['input']);

    $query = $db->query("
       SELECT Name, ProjectNumber, Hazard, Datedone
       FROM hira
       WHERE Name LIKE '%{$keywords}%'
       OR ProjectNumber LIKE '%{$keywords}%'
    ");
    ?>
    <div class="result-count">
        Found <?php echo $query->num_rows; ?> results
    </div>
    <?php
    if ($query->num_rows) {
        while ($r = $query->fetch_object()) {

        } 
        ?>
        <div class="results">
            <h3><?php echo $r->Hazard; ?></h3>
        </div>
    <?php
    }
}
?>
<div class="results">
    <h3><?php echo $r->Hazard; ?></h3>
</div>  

当我搜索“Andreas”时 我得到的结果是“找到2个结果” 但实际结果没有显示

我做错了什么 提前致谢

1 个答案:

答案 0 :(得分:1)

我不确定这是否是您的结果应该是什么样的,因为您的代码中存在一些错误。但这会给你表中的条目。

您的错误是直接关闭while - 循环,因此您在实际使用之前将结果释放到$r

$db = new mysqli('localhost', 'root', 'root', 'search');

if (isset($_GET['input'])) {
    $keywords = $db->escape_string($_GET['input']);
    $query = $db->query("
                SELECT Name, ProjectNumber, Hazard, Datedone
                FROM hira
                WHERE Name LIKE '%{$keywords}%'
                OR ProjectNumber LIKE '%{$keywords}%'");
    ?>
    <div class="result-count">
        Found <?php echo $query->num_rows; ?> results
    </div>
    <?php
    if ($query->num_rows) {
        while ($r = $query->fetch_object()) {
    ?>
            <div class="results">
                <h3><?php echo $r->Hazard; ?></h3>
            </div>
    <?php
        }
    }
}

好一点就是这个解决方案。在您的代码中,您已escaping input,使用prepared statementes仍然更安全:

$db = new mysqli('localhost', 'root', 'root', 'search');

if (isset($_GET['input'])) {
    $keywords = "%" . $_GET['input'] . "%";
    $query = $db->prepare("
                SELECT Name, ProjectNumber, Hazard, Datedone
                FROM hira
                WHERE Name LIKE ?
                OR ProjectNumber LIKE ?");
    $query->bind_param("ss", $keywords, $keywords);
    $query->execute();
    $query->store_result();
?>
    <div class="result-count">
        Found <?php echo $query->num_rows; ?> results
    </div>
<?php    
    $query->bind_result($name, $projectNumber, $hazard, $dateDone);
    while ($query->fetch()) {
    ?>
        <div class="results">
            <h3><?php echo $hazard; ?></h3>
        </div>
    <?php
    }
}