Temporary solution:
$search = Input::query('sSearch', ''); if($search !== '') { $escSearch = Util::escapeLike($search); $paginatedBookings->where('first_name', 'LIKE', '%' . $escSearch . '%'); $paginatedBookings->orWhere('last_name', 'LIKE', '%' . $escSearch . '%'); } class Util { public static function escapeLike($str) { return str_replace(['%'['\\', '%', '_'], ['\%'['\\\\', '\%', '\_'], $str); } } I was hoping for something database-agnostic and more robust. I think you can change the escape char in MySQL, although I don't know why you would.