Фильтр мета-значений Wordpress (сериализованный) - PullRequest
0 голосов
/ 27 августа 2018

У меня есть мета-ключ _student_registration_data, который хранится в базе данных wordpress и имеет мета-значение в виде сериализованного массива, как показано ниже:

a:9:{s:4:"name";s:20:"John Doe";s:11:"father_name";s:10:"Arnold";s:4:"cnic";s:13:"5540545612812";s:12:"home_address";s:9:"Scheme-33";s:16:"telephone_number";s:12:"923332654324";s:15:"registration_id";s:6:"08CS68";s:10:"program_id";s:1:"1";s:9:"cohort_id";s:1:"6";s:10:"section_id";s:1:"7";}

Теперь я хочу запрос mysql или некоторую встроенную функцию wordpress, с помощью которойЯ могу отфильтровать строку usermeta, имеющую registration_id, равную 08CS68.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Ответ Ника был ключевым, но он не решил мою проблему. Вот что на самом деле сработало:

SELECT * FROM (SELECT * FROM `cn_usermeta` WHERE meta_key = '_student_registration_data') as META WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(META.meta_value, 'registration_id', -1), ';', 2), ':', -1) = '"08CS68"'

Особая благодарность Ник:)

0 голосов
/ 27 августа 2018

Вы можете извлечь registration_id из вашей строки, используя SUBSTRING_INDEX:

SELECT *
FROM yourtable
WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(_student_registration_data,
                    'registration_id', -1), ';', 2), ':', -1) = '"08CS68"'
...