您可以在一个会话中存储多个阵列吗?

时间:2019-12-30 15:29:13

标签: php ajax session

您可以将多个阵列推送到一个会话吗?

例如

array_push($_SESSION['mySession'], $array);

问题:当我将另一个阵列推送到会话中时,它会删除该会话中的最后一个。

我的情况:

从数据库中获取特定项目

$meubel = $_GET['meubel'];

$sql = "SELECT * FROM mphp6_meubels WHERE naam LIKE '$meubel' ";
$stm = $pdo->prepare($sql);
$stm->execute();

进行新的会话(如果不存在):

if(!isset($_SESSION['meubels'])){
    $_SESSION['meubels'] = array();
}

制作特定数组

    while($row = $stm->fetch()){
        $meubel = [
            'naam' => $row['naam'],
            'type' => $row['type'],
            'omschrijving' => $row['omschrijving'],
            'prijs' => $row['prijs'],
        ];
}

将其推送到会话

array_push($_SESSION['meubels'], $meubel);

单击按钮时,将执行ajax请求:

var url = 'test.php?meubel=' + meubel;

输出 div中的会话

document.getElementById("div3").innerHTML = result;

如果需要所有ajax代码,请告诉我。

示例:

购买席位后,将其添加到会话中。座位的属性类似于:名称,描述和价格。因此,会话必须包含多个数组。

enter image description here

1 个答案:

答案 0 :(得分:2)

您每次都要在循环中重新定义$meubel,因此只有一个数组。您要动态附加每行[]

while($row = $stm->fetch()){
    $meubel[] = [
        'naam' => $row['naam'],
        'type' => $row['type'],
        'omschrijving' => $row['omschrijving'],
        'prijs' => $row['prijs'],
    ];
}

然后,您可能要合并而不是推送,不确定要得到什么最终结果:

$_SESSION['meubels'] = array_merge($_SESSION['meubels'], $meubel);