@toster111

Почему строка не десериализуется php?

Не могу получить из функции десериализованную строку.
Функция проверяет, отгружен ли товар, и если отгружен должна вывести массив с составом заказа, $order_content, но строка не десериализуется.
function isOrderShipped($id){
		$sql = "SELECT * FROM `order` where id= '$id'";
		$result = mysql_query($sql)  or die(mysql_error()); 
		while ($row = mysql_fetch_assoc($result))
		{
			$status_value = $row['status'];
			$order_content = unserialize($row['order_content']);
		}
		if ($status_value == 'Отгружен') { print_r $order_content;} 
		}

сериализую таким кодом
$item_position = new Application_Models_Product();
		foreach($_SESSION['cart'] as $product_id=>$count){
			$price=$item_position->getProductPrice($product_id);
			$product_positions[$product_id] = array(
			"price"=>$price,
			"count"=>$count,
			);
		}
		$order_content=addslashes(serialize($product_positions));

при этом $order_content типа boolean
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Если $order_content тип boolean - значит смотрим документацию на функцию unserialize():
В случае, если переданная строка не поддается десериализации, возвращается FALSE и генерируется E_NOTICE.
Проверяйте unserialize-ируемую строку, там что-то не так. Например те-же добавленные slash-и...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
VladimirAndreev
@VladimirAndreev
php web dev
\json_encode может?
Или \base64_encode, которая что угодно в безопасные строки преобразует
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы