Det finns ett sätt men det blir för dyrt ju fler du lägger till fält. Samma sak händer med många CMS som väljer att lagra ytterligare användardata i den formen.
Du kan få en fungerande SQL-sökning med detta:
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%'
Denna metod blir väldigt stor och dyr för MySQL-servern ju fler du lägger till tabeller. Därför skulle jag rekommendera att inte gå mer än 10-15 anslutningar på det sättet och sedan igen, skulle jag profilera det för att vara säker.