序列化和反序列化$ _session ['cart']

时间:2012-12-11 20:16:12

标签: php mysql

我有一个购物车,我想保存$ _SESSION ['cart'],其中包含$ product_id => $用户选择的产品数量。 例如:

[cart] => Array
    (
        [366] => 2000
        [215] => 456
    )

首先我在我的数据库中插入IT之前序列化$ _SESSION ['cart']。

<?php
if($_SESSION['cart']) 
{
    $pedido= serialize($_SESSION['cart']);
}
?>

$sql1="insert into pedido(orden) values ('$pedido')";

现在在另一个页面中我想查看$ _SESSION ['cart']。所以我用:

$sql2 = "SELECT orden FROM pedido where id_pedido = '$ID'";
$rs2 = mysql_query($sql2, $conexio) or die("Error al consultar: ".mysql_error()); 
$row2 = mysql_fetch_row($rs2);
$id_usuario=$row2[0];
$_SESSION['cartguardado']= unserialize($id_usuario);

我知道在最后一步我做错了。任何身体都可以帮助我并帮助我找到错误吗?

2 个答案:

答案 0 :(得分:0)

尝试输出$ row2

$sql2 = "SELECT orden FROM pedido where id_pedido = '$ID'";
$rs2 = mysql_query($sql2, $conexio) or die("Error al consultar: ".mysql_error()); 
$row2 = mysql_fetch_row($rs2);
print_r($row2);
$id_usuario=$row2[0];
$_SESSION['cartguardado']= unserialize($id_usuario);

如果$ row2 [0]为空,那么数据有问题

答案 1 :(得分:0)

我注意到您序列化了会话代码,但没有以可用于Php程序的方式呈现它,即

if($_SESSION['cart']) 
{
    $pedido= serialize($_SESSION['cart']);
}

根据我的小经验,我认为您需要首先对代码进行反序列化,以便您可以使用它,即

if($_SESSION['cart']) 
{
    $pedido = unserialize(serialize($_SESSION['cart']));
}