如何从Mysql数据库输出更多搜索结果?

时间:2016-12-22 22:26:51

标签: php mysql database

我有一个用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());

1 个答案:

答案 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>

        }

    }

}

请注意,这是一种非常过时且不太安全或可维护的做事方式。