我在页面上创建了一个简单的搜索框,用户可以使用PHP键入关键字以查找某些项目的照片.我正在使用MysqL数据库.我修剪结果并仅显示10以使加载更快,但是某些关键字组导致浏览器在IE和Firefox上都挂起.当这种情况发生在IE上时,我可以在10个结果之外看到照片的轮廓(只是轮廓),右上角有一个“X”标记,类似于加载照片时,网页上不存在照片,即使我编写代码只显示10个结果.该数据库有超过10,000个条目,我想也许它正试图在数据库中显示整个照片集.这是我正在使用的一些代码.
我正在使用下面的函数来创建查询. $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";
}
$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?你能帮助我吗?我可以根据需要发布更多代码. TIA!
解决方法:
不要将您的搜索结果限制在PHP中,使用LIMIT关键字将它们限制在SQL查询中.
如:
select * form yourtable where ... order by ... limit 10;
顺便说一句,那些像’%的东西’可能是昂贵的.也许你应该看看Full text indexing and searching.
如果你想显示更多…链接或类似的东西,一种方法是将你的查询限制为11,只显示前十.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。