[英]PHP/AJAX Case Insensitive search
我試圖在單個搜索輸入中的多個數據庫列上創建不區分大小寫的搜索。
目前,我使用單個搜索字符串搜索多個列。 問題是它不會對大小寫不敏感。
作為示例...如果我搜索項目的狀態:“付費”,它將找不到關聯的項目,因為數據庫中的狀態名稱設置為“付費”。
我試圖讓它成為用戶可以通過“付費”或“付費”搜索返回相同的結果。
這是我的代碼:
if (isset($_GET['keyword'])) {
$_SESSION['quickSearch']=$_GET['keyword'];
$keyword = trim($_GET['keyword']);
$srWords = explode(' ', $keyword);
$srString = array();
foreach ($srWords as $srWord) {
if (!empty($srWord))
$srString[] = '[NM] like \'%' . $db->sql_escape($srWord) . '%\'';
}
$srStringHving = implode(' AND ', $srString);
$srString = implode(' OR ', $srString);
$query = "SELECT clients.clientName,
projects.Client_ID,
projects.projectNumber,
projects.projectName,
projects.projectManager,
projects.expectedDate,
projects.address,
projects.CreationDate,
projects.custom1,
projects.custom2,
projects.custom3,
projects.custom4,
projects.custom5,
projects.custom6,
projects.custom7,
projects.custom8,
projects.custom9,
projects.Status_ID,
statuses.status, concat(clients.clientName,' ',
projects.Client_ID,' ',
projects.projectNumber,' ',
projects.projectName,' ',
projects.projectManager,' ',
projects.expectedDate,' ',
projects.address,' ',
projects.CreationDate,' ',
projects.custom1,' ',
projects.custom2,' ',
projects.custom3,' ',
projects.custom4,' ',
projects.custom5,' ',
projects.custom6,' ',
projects.custom7,' ',
projects.custom8,' ',
projects.custom9,' ',
projects.Status_ID,' ',
statuses.status) as srterm
FROM projects
JOIN clients ON projects.Client_ID = clients.Client_ID
JOIN statuses ON projects.Status_ID = statuses.Status_ID
WHERE " . str_ireplace('[NM]', 'clientName', $srString) . "
OR " . str_ireplace('[NM]', 'projectNumber', $srString) . "
OR " . str_ireplace('[NM]', 'projectName', $srString) . "
OR " . str_ireplace('[NM]', 'address', $srString) . "
OR " . str_ireplace('[NM]', 'area', $srString) . "
OR " . str_ireplace('[NM]', 'status', $srString) . "
OR " . str_ireplace('[NM]', 'custom1', $srString) . "
OR " . str_ireplace('[NM]', 'custom2', $srString) . "
OR " . str_ireplace('[NM]', 'custom3', $srString) . "
OR " . str_ireplace('[NM]', 'custom4', $srString) . "
OR " . str_ireplace('[NM]', 'custom5', $srString) . "
OR " . str_ireplace('[NM]', 'custom6', $srString) . "
OR " . str_ireplace('[NM]', 'custom7', $srString) . "
OR " . str_ireplace('[NM]', 'custom8', $srString) . "
OR " . str_ireplace('[NM]', 'custom9', $srString) . " HAVING " . str_ireplace('[NM]', 'srterm', $srStringHving) ."
ORDER BY projects.project_ID DESC
LIMIT 0 , 200";
$result = mysqli_query($dbc, $query);
謝謝,提前幫忙!
查看MySQL提供的LOWER()
方法。 您可以通過將字符串轉換為小寫來模擬不區分大小寫的搜索。
SELECT * FROM my_table WHERE LOWER(my_field) = 'my value';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.