Jest na to sposób, ale im więcej dodasz pól, tym będzie drożej. To samo dzieje się z wieloma systemami CMS, które decydują się na przechowywanie dodatkowych danych użytkownika w tej formie.
Możesz uzyskać działający kod SQL wyszukiwania za pomocą tego:
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%'
Ta metoda staje się bardzo duża i kosztowna dla serwera MySQL, im więcej dodasz tabel. Dlatego radzę nie robić więcej niż 10-15 takich połączeń, a potem znowu profiluję to, aby się upewnić.