我有一个用PHP编写的HTML搜索表单,它连接到MySQL数据库,找到一个包含列和行的表,然后在表下显示带有回显的数据。
$output = "Document ID: ".$results['id']."<br><a href='".$results['url']."'>".$results['name']."</a> (".$results['short_withtag'].")<br><span style='font-size: 12px;'>Bad search result? Try a different keyword</span>
列是id,name,short,short_withtag和url,每个都包含特定数据。问题是,如果我输入像pie这样的关键字(所有行中都存在这样的术语),它将只显示一个搜索结果。如何让它显示多个?
这是我使用的查询:
mysql_query("SELECT * FROM env
WHERE (`id` LIKE '%".$query."%') OR (`name` LIKE '%".$query."%') OR (`short` LIKE '%".$query."%') OR (`short_withtag` LIKE '%".$query."%') OR (`url` LIKE '%".$query."%')") or die(mysql_error());
答案 0 :(得分:1)
将所有行放入数组中,然后使用foreach循环输出它们。
你可以这样做:
$result = mysql_query("SELECT * FROM env
WHERE (`id` LIKE '%".$query."%') OR (`name` LIKE '%".$query."%') OR (`short` LIKE '%".$query."%') OR (`short_withtag` LIKE '%".$query."%') OR (`url` LIKE '%".$query."%')") or die(mysql_error());
// If query is successful
if ($result) {
// Create an empty array to which we're going to put rows
$dataForTheOutput = array();
// Now push each row into the array
while ($row = mysql_fetch_assoc($result)) {
array_push($dataForTheOutput, $row);
}
// Now you can output data
if (empty($dataForTheOutput)) {
echo 'No results found';
} else {
// Using foreach loop display each row
foreach ($dataForTheOutput as $component) {
echo "Document ID: ".$component['id']."<br><a href='".$component['url']."'>".$component['name']."</a> (".$component['short_withtag'].")<br><span style='font-size: 12px;'>Bad search result? Try a different keyword</span>
}
}
}
请注意,这是一种非常过时且不太安全或可维护的做事方式。