显示来自sql查询的多个结果
问题描述:
所以我试图从查询被搜索时从数据库显示多个结果,查询从另一页上的搜索框传递。显示来自sql查询的多个结果
我有它显示一个结果,但这就是它会显示。 我需要它来显示所有与搜索查询相关的结果。
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>
有没有人有任何建议的代码?
在此先感谢;
答
你需要把它放在一个while循环中以显示多个结果,你使用的fetch函数只会检索一行,如果你把它放在一个循环中,你可以继续读取,直到没有东西可以读取:
//$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>
PS你的代码容易受到SQL注入的攻击,你应该阅读一下准备好的语句More Info on that
答
你可以用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();
?>
您只需要显示一条记录或完美的搜索值结果? – RJParikh
你必须遍历结果集。请参阅[关于fetch_assoc()]的PHP手册页上的示例#1(http://php.net/manual/en/mysqli-result.fetch-assoc.php)。另外,请阅读“准备好的陈述”。 –
只需阅读[documentation]上的示例(http://php.net/manual/en/mysqli-result.fetch-assoc.php)。 –