I have a table name deny_keywords in database with this structure:
| id | word |
|---|---|
| 1 | thief |
| 2 | crook |
| 3 | killer |
and I have an input that user can send a text and this text Placed in variable name $user_text.
Now I want to check if $user_text includes any of deny keywords or no.
Is there a way to do this just using SQL?
A way like this:
SELECT * FROM deny_keywords WHERE %word% like $user_text;
CodePudding user response:
You can create a fulltext index on the word column of the deny_keywords table to accomplish this.
To create the index you would run:
alter table deny_keywords add fulltext(word);
To use the index in the query you are trying to run:
select *
from deny_keywords
where match(word) against ('$user_text' in natural language mode);
A fiddle is here: http://sqlfiddle.com/#!9/443eb6/1/0
For security reasons, you should use mysqli or PDO, where you prepare the statement and bind the user_text variable as a parameter. That's a separate discussion.
CodePudding user response:
This is the solution I found and it works:
SELECT * FROM deny_keywords WHERE INSTR('{$user_text}' , `word`) > 0
