Вы должны правильно экранировать ввод пользователя, чтобы сервер знал, какие символы являются подстановочными знаками, а какие - данными для сопоставления.
$search = '%' . str_replace(array('_', '%'), array('\\_', '\\%'), $_POST['search']) . '%';
Это исключит те символы, которые в противном случае считались бы подстановочными знаками.$search
теперь будет содержать что-то вроде:
%100\%%
, что будет соответствовать I always give 100% when working
, но не I do 100 pushups daily
.