2016-12-11 73 views
1

我工作的一個程序,其中的「課程」的課程代碼或名稱的用戶搜索。我想使它所以,如果用戶搜索「CODE1002」,代碼1002 EL從數據庫中仍然會返回(有一個空格)。正如其他職位所表明的,我嘗試過使用REPLACE函數但沒有成功。我怎麼能忽略MySQL的搜索查詢與LIKE空間?

這裏是我當前的代碼(但它不會忽略空格):

$records = $conn->prepare('SELECT (SELECT COUNT(*) FROM courses WHERE (course_code LIKE :searchText OR course_name LIKE :searchText)) AS course_count, course_id, course_code, course_name FROM courses WHERE (course_code LIKE :searchText OR course_name LIKE :searchText) ORDER BY course_code LIMIT 6'); 

$final_search_term = "%".$search_term."%"; 
$records->bindParam(':searchText', $final_search_term); 

這是我在加入REPLACE忽略上沒有成功的course_code空間嘗試:

$records = $conn->prepare('SELECT (SELECT COUNT(*) FROM courses WHERE (REPLACE(course_code,' ','') LIKE :searchText OR course_name LIKE :searchText)) AS course_count, course_id, course_code, course_name FROM courses WHERE (REPLACE(course_code,' ','') LIKE :searchText OR course_name LIKE :searchText) ORDER BY course_code LIMIT 6'); 

$final_search_term = "%".$search_term."%"; 
$records->bindParam(':searchText', $final_search_term); 

第一個代碼工作完美除了沒有忽視空間。

+0

可能esier做在PHP第一替換 –

+0

不應取代是像右側? – rvnlord

回答

4

你把替換錯誤的一邊。爲了安全起見,讓我們這樣做對兩個操作數:

REPLACE(course_code, ' ', '') LIKE REPLACE(:searchText, ' ', '') 
+0

你有什麼想法爲什麼以下不工作? SELECT COURSE_ID,course_code,課程名稱FROM課程WHERE(REPLACE(courses.course_code, '', ''),如REPLACE(\ '%COSC 2%\', '', ''))ORDER BY course_code LIMIT 6我想測試一小部分,我得出的結論是'%COSC 2%'是造成這個問題的原因。但是,當我在phpmyadmin中執行此操作時,返回正確的結果(刪除轉義(\)後)沒有返回:S –

+0

@JasonFel。 。 。您不需要SQL代碼中的反斜槓。你只需要單引號。 –

+0

謝謝!解決了它。 –