我制作了一个搜索框功能,可以让我键入一个单词,然后在我的数据库中找到该单词的任何匹配项。但是,它只能找到确切的匹配。我正在寻找如何使搜索更好的建议。PHP,MySQL:进行更好的搜索?
以下代码是我当前用于搜索数据库的用户可能匹配用户搜索的数据。
$search_keys = array('fname', 'lname', 'email');
foreach ($search_keys as $key)
{
$result = mysql_query("SELECT id FROM users WHERE " . $key . " LIKE " . "\"{$str}\"") or die(mysql_error());
while ($row = mysql_fetch_array($result))
{
// Get the User
$tmp_user = new User();
$tmp_user->getUserById($row['id']);
// Add User to list of potential candidates
array_push($users, $tmp_user);
}
}
请记住,使用'LIKE'方法会忽略索引,并根据您的数据子集进行搜索抓取 – Jakub 2011-05-04 15:11:56
不完全正确。如果搜索项完全被包围,它只会忽略索引,但如果它只以%结尾 - 例如'Jam%',它将使用索引。资料来源:http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html – 2011-05-04 15:14:25