【发布时间】:2014-07-17 06:08:52
【问题描述】:
我有这个小的 php 搜索脚本来帮助我搜索用户表。
示例:
- 如果我搜索“John”,我会得到结果
- 如果我搜索“John Doe”(两个带有空格的单词),我没有得到任何结果。 即使用户名是 John Doe。
我想知道是否可以更改此脚本中的某些内容以帮助我搜索多个关键字。
这是搜索代码:
<?php
if(isset($_GET['keywords'])){
$keywords = escape($_GET['keywords']);
$search = DB::getInstance()->query("
SELECT `id`,`username`,`first_name`,`last_name`,`unit`,`email`,`rent_own`,`city`,`zip`,`phone`,`joined`,`group_id` FROM `users` WHERE
`username` LIKE '%{$keywords}%' OR
`first_name` LIKE '%{$keywords}%' OR
`last_name` LIKE '%{$keywords}%' OR
`unit` LIKE '%{$keywords}%' OR
`email` LIKE '%{$keywords}%' OR
`rent_own` LIKE '%{$keywords}%' OR
`city` LIKE '%{$keywords}%' OR
`zip` LIKE '%{$keywords}%' OR
`phone` LIKE '%{$keywords}%' OR
`joined` LIKE '%{$keywords}%' OR
`group_id` LIKE '%{$keywords}%'
");
?>
欢迎和赞赏任何想法或解决方案。
【问题讨论】:
-
我的第一个想法是您将
John Doe作为查询字符串参数传递,其中包括两个单词之间的%20空格。您能否确认$keywords实际上是您想要的John Doe? -
不,我很确定您对
%20的空间是正确的。有什么办法可以解决吗? -
确保 $keywords = escape($_GET['keywords']);正在做你认为它会做的事情。
-
展开您的关键字并在每个数据库表行中搜索每个关键字,因此您应该得到所有可能的数据返回。
-
我对需求一无所知。但似乎全文搜索在这里很有用。
标签: php