2016-12-11 5 views
1

私は、コースコードまたは名前で "コース"を検索するプログラムに取り組んでいます。ユーザーが「CODE1002」を検索すると、データベースからCODE 1002 ELが返されます(スペースがあります)。他の投稿に示されているように、私は成功なしでREPLACE機能を使用しようとしました。ここでLIKEでmysql検索クエリのスペースを無視するにはどうしたらいいですか?

は私の現在のコードは、(ただし、それはスペースを無視しない)である:ここでは

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

は成功しませんcourse_code上のスペースを無視するREPLACE加えることで私の試みです:

$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

は、PHP最初 –

+0

に交換を行うことesierかもしれLIKEの右側にあることREPLACEないでしょうか? – rvnlord

答えて

4

あなたは間違った側に置き換えています。ただ、安全のために、のは、両方のオペランドのためにそれをやらせる:

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

あなたは次のことがうまくいかない理由を知っていますか?コース名、コースコード、コース名、コース名、コース名、コース名、コース名、コース名、コース名、より小さい部分をテストし、\ '%COSC 2%\'が問題を引き起こしていると判断しました。しかし、私はphpmyadminでこれを行うと何も返されません。エスケープ(\)を取り除いた後に正しい結果が返されます:S –

+0

@JasonFel。 。 。 SQLコードにバックスラッシュは必要ありません。あなたは一重引用符を欲しいだけです。 –

+0

ありがとうございます!それを解決した。 –

関連する問題