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