Можно результат запроса обернуть в JSON форму, а в php к результату применить json_decode($result, true)
SQL запрос:
SELECT
CONCAT(
'{"',`session`,'":{',
GROUP_CONCAT('"PRODUCT ', @i:=@i+1, '":{"PRODUCT ID":',product_id,',"PRICE":',price,',"QUANTITY":',quantity,'}' separator ','),
'}}') AS value
FROM carts, (SELECT @i:=0) X
WHERE `session` = 222145
GROUP BY `session`
пример работы на
sqlfiddle
в PHP как-то так:
$session_id = 222145;
$sql = 'SELECT
CONCAT(
\'{"\',`session`,\'":{\',
GROUP_CONCAT(\'"PRODUCT \', @i:=@i+1, \'":{"PRODUCT ID":\',product_id,\',"PRICE":\',price,\',"QUANTITY":\',quantity,\'}\' separator \',\'),
\'}}\') AS value
FROM carts, (SELECT @i:=0) X
WHERE `session` = %s
GROUP BY `session`';
$arr = json_decode(mysql_result(mysql_query(sprintf($sql, $session_id)),0), true);
var_dump( $arr );