显示sql查询的多个结果

时间:2016-04-14 13:02:33

标签: php mysql mysqli

所以我试图在搜索查询时显示来自数据库的多个结果,查询从另一个页面上的搜索框传递。

我让它显示一个结果,但这就是它将显示的全部内容。 我需要它来显示与搜索查询相关的所有结果。

php代码在

之下
<meta charset="UTF-8">
<?php
    $mysqli = new mysqli('localhost', 'scott', 'tiger','courses');
    if ($mysqli->connect_errno) 
    {
        die('Database connection failed');
    }
    //$m->set_charset('utf8');
    $search_sql = "
    SELECT title, summary, id
    FROM course
    WHERE title LIKE '%".$_POST['searchBar']."%'";
    $result = $mysqli->query($search_sql) or die($mysqli->error);
    $search_result = $result->fetch_assoc();
?>
<!doctype html>
<head>
    <meta charset="utf-8">
    <h1>Search Results</h1>
</head>
<body>
    <h3><?= $search_result['title'] ?></h1>
    <p><?= $search_result['summary'] ?></p>
</body>

以及搜索栏的代码

<!doctype html>
<html>
<Head>
    <meta charset = "utf-8">
    <title>Search</title>
</head>
<body>
    <h2>Search</h2>
    <form name="search" method="post" action="SearchResultsPage.php">
        <input name="searchBar" type="text" size="40" maxlength="60" />
        <input type="submit" name="Submitsearch" value="Search" />
    </form>
    </body>

有人有任何建议吗?

提前致谢;

2 个答案:

答案 0 :(得分:1)

您需要将其放置在while循环中以显示多个结果,您使用的提取功能只会检索一行,如果您将其放在一个循环中,您可以继续提取,直到有什么都不拿:

//$m->set_charset('utf8');
$search_sql = "
SELECT title, summary, id
FROM course
WHERE title LIKE '%".$_POST['searchBar']."%'";
$result = $mysqli->query($search_sql) or die($mysqli->error);
?>
<!doctype html>
<head>
    <meta charset="utf-8">
    <h1>Search Results</h1>
</head>
<body>
    <?PHP while($search_result = $result->fetch_assoc()) { ?>
    <h3><?= $search_result['title'] ?></h1>
    <p><?= $search_result['summary'] ?></p>
    <?PHP } ?>
</body>

P.S。你的代码容易受到SQL注入攻击,你应该阅读有关预准备语句More Info on that

的内容

答案 1 :(得分:0)

您可以使用while循环遍历查询结果。为了完成这个例子,我添加了必要的数据清理。

<?php

// function to clean post data
function cleanPost(&$value) {

    if (is_array($value)) {
        foreach ($value as $k => $v) {
            $value[$k] = cleanPost($v);             
        }
        return $value;
    }
    else {
        $value = mysql_real_escape_string($value);
        return trim(htmlentities(strip_tags($value)));
    }
}

// search function
function search() {

    // check if post data is set
    if (isset($_POST['searchBar'])) {

        // make link with db
        $link = mysqli_connect('localhost', 'scott', 'tiger','courses');
        if (!$link)         
            return false;
        }

        // clean your post data
        $cleanPostData = cleanPost($_POST);

        // query
        $sql = "SELECT title, summary, id FROM course WHERE title LIKE '%".$cleanPostData['searchBar']."%'";
        $result = mysqli_query($link, $sql);

        // iterate over results
        if (isset($result) && mysql_num_rows($result) > 0) {
            while ($row = mysql_fetch_assoc($result)) {
                // here is your data
                echo $row['title'] . "< br/>";
                echo $row['summary'] . "< br/>";
                echo $row['id'] . "< br/>";
            }
        }       
    }
}

// call search function
search();

?>