The '%' character in an SQL LIKE clause is a wildcard: "match any number of any characters including none" - it's like "*" in a file name under Windows: "*.*" matches every file name with every extension.
If you want to allow the user to search for a literal percent character, it needs to be escaped:
MySQL 8.0 Reference Manual: 9.1.1 String Literals[
^]
But ... do remember that your code almost certainly adds '%' to the front and end of the search string the user enters! Escape those and all searches will return no results.