Получение определенного значения из Serialized Array MySQL

Структура базы данных выглядит следующим образом:

id|metaKey|metaValue --+-------+----------------------------------- 55|product|a:8:{s:3:"sku";s:0:"";s:8:"products";a:3:{i:1;a:3:{s:6:"option";s:1:"1";s:5:"price";s:5:"14.95";s:9:"saleprice";s:0:"";}i:2;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}i:3;a:3:{s:6:"option";s:0:"";s:5:"price";s:0:"";s:9:"saleprice";s:0:"";}}s:11:"description";s:124:"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";s:8:"shiprate";s:1:"A";s:8:"featured";s:2:"no";s:4:"sale";s:3:"yes";s:10:"cart_radio";s:1:"0";s:6:"optset";s:0:"";} 

Это из сайта wordpress, мне нужно получить первое значение «цена», которое составляет 14,95, что лучший способ получить определенное значение из сериализованного массива, хранящегося в mysql?

Создайте запрос, прочитайте данные из SQL, unserialize () metaValue и получите доступ к нему как к массиву. Вы также можете попробовать использовать регулярные выражения, если вам нужно извлечь его в mysql, но это не очень хороший подход.

Используйте unserialize() для извлечения данных metaValue .

Следующий код может получить первое значение цены:

 $result = mysql_query("SELECT * FROM tbl WHERE id=55"); $row = mysqLfetch_assoc($result); $serial = $row['metaValue']; $data = unserialize($serial); echo $data['products'][1]['price']; 

Данные в этой строке структурированы как:

 array(8) { ["sku"]=> string(0) "" ["products"]=> array(3) { [1]=> array(3) { ["option"]=> string(1) "1" ["price"]=> string(5) "14.95" ["saleprice"]=> string(0) "" } [2]=> array(3) { ["option"]=> string(0) "" ["price"]=> string(0) "" ["saleprice"]=> string(0) "" } [3]=> array(3) { ["option"]=> string(0) "" ["price"]=> string(0) "" ["saleprice"]=> string(0) "" } } ["description"]=> string(124) "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." ["shiprate"]=> string(1) "A" ["featured"]=> string(2) "no" ["sale"]=> string(3) "yes" ["cart_radio"]=> string(1) "0" ["optset"]=> string(0) "" }