Это как оно у вас так построилось??? В смысле что за кей, валуе? Назачем? Таблица просто должна содержать 3 (по вашему примеру) поля, примерно так:
id | family | name
1 Иванов Иван
2 Петров Коля
3 Иванов Василий
...
тогда номальный запрос будет возвращать нужный результат
SELECT `id`
FROM `promisers_data` as `pd`
WHERE (`family` LIKE 'Иванов')
and (`name` LIKE 'Иван')
Если вы ищете фамилию, то не нужно ее искать в середине поля фамилии, то есть % перед текстом запроса не нужен, а по уму и в конце лишний, если вы не ищете все похожие имена с другим окончанием. И работать будет в разы быстрее, а если еще и индексы на поля создать - вообще летать будет. Особенно если заменить like на равенство(=).