我在一个页面上创建了一个简单的搜索框,用户可以在其中键入关键字,使用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个。