Der er en måde, men det bliver dyrt, jo flere du tilføjer felter. Det samme sker med mange CMS'er, der vælger at gemme yderligere brugerdata i den form.
Du kan få en fungerende søge-SQL ved at bruge denne:
SELECT
users.*,
firstname.data AS firstname,
lastname.data AS lastname,
eyecolor.data AS eyecolor,
FROM
users
LEFT JOIN completed_form_fields AS firstname ON firstname.userid = users.id AND firstname.fieldkey = "firstname"
LEFT JOIN completed_form_fields AS lastname ON lastname.userid = users.id AND lastname.fieldkey = "lastname"
LEFT JOIN completed_form_fields AS eyecolor ON eyecolor.userid = users.id AND eyecolor.fieldkey = "eyecolor"
WHERE
firstname.data LIKE '%searchdata%'
OR lastname.data LIKE '%searchdata%'
OR eyecolor.data LIKE '%searchdata%'
Denne metode bliver meget stor og dyr for MySQL-serveren, jo flere du tilføjer tabeller. Derfor vil jeg anbefale ikke at gå mere end 10-15 joins på den måde, og så igen, vil jeg profilere det for at være sikker.