我在一个页面上创建了一个简单的搜索框,用户可以在其中键入关键字,使用php查找某些项目的照片。我用的是mysql数据库。我对结果进行了修改,只显示了10个以加快加载速度,但某些关键字集会导致浏览器同时挂在ie和firefox上。当这种情况发生在IE上时,我可以看到超过10个结果的照片轮廓(只是剪影),右上角有一个“X”标记,类似于当你加载一张照片,而照片不存在于网页上时,即使我编写代码只显示10个结果。数据库有超过10000个条目,我想它可能正在试图在数据库中显示整个照片集。这是我正在使用的一些代码。
我正在使用下面的函数创建查询。$keyword是用户键入的关键字数组。

function create_multiword_query($keywords) {
// Creates multi-word text search query
$q = 'SELECT * FROM catalog WHERE ';
$num  = 0;
foreach($keywords as $val) {    // Multi-word search
    $num++;
    if ($num == 1) {
        $q = $q . "name LIKE  '%$val%'"; }
    else {
        $q = $q . " AND name LIKE  '%$val%'";}
}
$q = $q . ' ORDER BY name';
return $q;
//$q = "SELECT * FROM catalog WHERE name LIKE \"%$trimmed%\" ORDER BY name";
}

并显示结果。最大显示数是10。
$num = 0;
while (($row = mysqli_fetch_assoc($r)) && ($num  < MAX_DISPLAY_NUM)) {  // add max search result!
    $num++;
    print_images($row['img_url'], '/_', '.jpg');    // just prints photos
}

我是一个php新手,但我的代码似乎没有什么问题。也许我写这些算法的方式不太适合php或mysql?你们能帮我解决这个问题吗?我可以在必要时发布更多的代码。蒂亚!!

最佳答案

不要用php限制搜索结果,用LIMIT关键字在sql查询中限制它们。
如:

select * form yourtable where ... order by ... limit 10;

顺便说一下,那些LIKE '%something%'可能很贵。或许你应该看看Full text indexing and searching
如果您想显示More...链接或类似的内容,一种方法是将查询limit到11,并且只显示前10个。

10-07 19:34
查看更多