0

我正在研究一个自动建议领域,它已经可以工作了。我现在唯一要做的就是限制搜索字段下方列表中的数据输出。有人可以帮我怎么做吗?我已经尝试了几种方法,但最终出现错误。所以我正在尝试限制从数据库中提取的结果数量。我尝试在 php 中执行此操作(我认为它的性能更好,不是吗?)。这是已经可以正常工作的代码:

<?php
require_once 'connect.php';

if (isset($_POST['search_term']) == true && empty ($_POST['search_term']) == false) {
    $search_term = mysql_real_escape_string ($_POST['search_term']);
    $query = mysql_query ("SELECT `word` FROM `datalist` WHERE `word` LIKE '$search_term%'");
    while (($row = mysql_fetch_assoc($query)) !==false) {
        echo '<li>', $row['word'], '</li>';
    }   
}
?>

由于我不是专家,因此我很乐意为您提供帮助以了解更多信息...

4

2 回答 2

1

您可以在查询中限制它。最好限制从数据库中检索的数据量,而不是检索所有内容然后过滤结果。MySQL 是为快速运行这些查询而构建的,因此请充分利用它。

mysql_query ("SELECT `word` FROM `datalist` WHERE `word` LIKE '$search_term%' LIMIT 5");

但是,如果您愿意,可以通过在 for 循环中获取来在 php 中执行此操作:

$limit = 5 // Make limit whatever you want
// Make sure you have enough results to fetch
if(mysql_num_rows($query) < $limit)
   $limit = mysql_num_rows($query);

for($i = 0; $i < $limit; $i++){
   $row = mysql_fetch_assoc($query);
   echo '<li>', $row['word'], '</li>';
}
于 2013-06-22T20:27:39.233 回答
0

最简单的方法是更新您的 sql 查询并添加一个限制子句。因此,如果您可能只想要前 10 个结果,请这样做:

SELECT `word` 
FROM `datalist` 
WHERE `word` 
LIKE '$search_term%'
LIMIT 10;

您也可以在不修改查询的情况下在 php 中执行此操作,但我发现如果您只是从数据库中提取所需的内容,那将是最简单的。

顺便说一句,您使用的是旧的mysql 连接器。此扩展自 PHP 5.5.0 起已弃用,并将在未来删除。相反,应该使用MySQLiPDO_MySQL扩展。

于 2013-06-22T20:28:53.120 回答