Структура базы данных выглядит следующим образом:
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) "" }