2016-12-11 1 views
1

Ich arbeite an einem Programm, bei dem ein Benutzer nach Kurscode oder Name nach einem "Kurs" sucht. Ich versuche es so zu machen, wenn der Benutzer "CODE1002" sucht, wird CODE 1002 EL von der Datenbank immer noch zurückkehren (es gibt ein Leerzeichen). Wie von anderen Posts angezeigt, habe ich versucht, die REPLACE-Funktion ohne Erfolg zu verwenden.Wie kann ich Leerzeichen in MySQL-Suchabfrage mit LIKE ignorieren?

Hier ist mein aktueller Code ist (aber es ist nicht ignoriert Leerzeichen):

$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); 

Hier ist mein Versuch, das Hinzufügen REPLACE Plätze auf der course_code ohne Erfolg zu ignorieren:

$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); 

Der erste Code funktioniert perfekt, abgesehen davon, Leerzeichen nicht zu ignorieren.

+0

kann esier sein das Ersetzen in PHP ersten –

+0

auf der rechten Seite sein sollte nicht ersetzen zu tun? – rvnlord

Antwort

4

Sie setzen den Ersatz auf die falsche Seite. Nur um sicher zu gehen, machen wir es für beide Operanden tun:

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

Haben Sie eine Idee, warum das Folgende nicht funktioniert? SELECT course_id, course_code, course_name FROM Kurse WHERE (REPLACE (courses.course_code, '', '') WIE ERSETZEN (\ '% COSC 2% \', '', '')) ORDER BY course_code LIMIT 6 Ich versuche es Testen Sie einen kleineren Teil und ich bin zu dem Schluss gekommen, dass "% COSC 2%" das Problem verursacht. Nichts kehrt jedoch zurück, wenn ich dies in phpmyadmin mache, gibt es die korrekten Ergebnisse zurück (nach dem Entfernen der Escapezeichen (\)): S –

+0

@JasonFel. . . Sie möchten die umgekehrten Schrägstriche nicht im SQL-Code. Sie wollen nur das einfache Zitat. –

+0

Danke! Ich habe es gelöst. –

Verwandte Themen