我有以下簡單的搜索查詢代碼:如何從MySql中檢索信息而忽略特殊字符?
function explode_search($squery, $column, $db, $link) {
global $conn;
$ven = explode(' ', safeInput(str_replace(',', '', $squery)));
$ven2 = array_map('trim', $ven);
$qy = ''.$column.' LIKE "%'.implode('%" AND '.$column.' LIKE "%', $ven2).'%"';
$query = 'SELECT DISTINCT '.$column.', id, work_composer FROM '.$db.' WHERE '.$qy.' ORDER BY '.$column.' LIMIT 100';
$result = mysqli_query($conn, $query);
while ($row = mysqli_fetch_assoc($result)) {
echo '<div><span class="mdmtxt" style="margin-bottom:5px;"><a href="'.$link.'.php?id='.$row['id'].'">'.$row[$column].'</a></span> <span class="mdmtxt" style="opacity:0.6;">('.fixcomp(cfid($row['work_composer'], 'cffor_composer', 'composer_name')).')</span></div>';
}
}
(該safeInput函數刪除「和」和其他可能的問題羣)
它的工作好了在一定程度上
當有人看。對於'Stephane',我希望他們也能找到'Stéphane'(反之亦然),或者如果他們正在尋找'Munich','Münich'也應該出現在列表中。
有沒有辦法讓MySQL匹配那些搜索查詢不管涉及什麼特殊字符?
如果使用了綁定參數,則不會有任何有問題的字符* – CD001
您可能還想檢查數據庫表的排序規則;如果你使用'utf8_general_ci'(例如)它應該匹配帶有或不帶重音符的字符; * Stephane *和*Stéphane*在你的例子中*應該沒問題。 – CD001