查询带重音和无重音

时间:2014-06-13 06:37:46

标签: php mysql pdo

我写了一个搜索脚本,效果很好。现在我正在尝试搜索带有和没有重音。 例如:我有2个用户,björn和barça。如果我写björn或barça我会找到它们,但是,如果我写bjorn或barca,我找不到它们。无论重音如何,我都希望找到我的用户。好吧,我发现了一些像这样的问题,人们提出要改变字母的重音到正常形式。但如果我将barça改为barca并进行查询,我找不到barça。

我该怎么做?我是否需要向数据库发送多个查询?

这是我目前的代码:

$search_string = preg_replace("/[^A-Za-z0-9çğıöüş]/", " ", $_POST['query']);
$search_param = '%'.$search_string.'%';

// Do Search
$result = $database->connection->prepare("SELECT 'user' AS 'type', user_id AS id, user_firstname AS firstname, user_lastname AS lastname, user_profile_picture AS picture FROM users WHERE user_firstname LIKE :user_firstname OR user_lastname LIKE :user_lastname UNION ALL SELECT 'page' AS 'type', page_id AS id, page_firstname AS firstname, page_lastname AS lastname, page_profile_picture AS picture FROM pages WHERE page_firstname LIKE :page_firstname OR page_lastname LIKE :page_lastname ORDER BY type ASC");
$result->bindParam(':user_firstname', $search_param, PDO::PARAM_STR);
$result->bindParam(':user_lastname', $search_param, PDO::PARAM_STR);
$result->bindParam(':page_firstname', $search_param, PDO::PARAM_STR);
$result->bindParam(':page_lastname', $search_param, PDO::PARAM_STR);
$result->execute();
$result_array = $result->fetchAll(PDO::FETCH_ASSOC);

0 个答案:

没有答案