为了账号安全,请及时绑定邮箱和手机立即绑定

将数组数据推入会话时出错

将数组数据推入会话时出错

PHP
Cats萌萌 2023-10-22 22:01:53
我有一个 php 代码将产品添加到会话中,但它没有按预期工作,下面是我的代码:<?phpsession_start();include 'db.php';$status = 1;if (isset($_POST['id']) && $_POST['id']!=""){    $id = $_POST['id'];    $sql = "SELECT * FROM website_tree WHERE id = '$id' ";    $result = mysqli_query($link, $sql);    $row = mysqli_fetch_array($result);    $id = $row['id'];    $name = $row['name'];    $price = $row['price'];    $image = $row['image'];    $cartArray = array(        'id'=>$id,        'name'=>$name,        'price'=>$price,        'image'=>$image,        'quantity'=>1    );    if(empty($_SESSION["shopping_cart"]['product'])) {        $_SESSION["shopping_cart"]['product'] = array_push($_SESSION["shopping_cart"], $cartArray);        $status = 1;    }else{        $_SESSION["shopping_cart"]['product'] = array_push($_SESSION["shopping_cart"], $cartArray);        $status = 1;    }}echo json_encode(array("status"=>$status)); ?>我收到这个警告: array_push() expects parameter 1 to be array, null谁能帮我纠正我的代码?
查看完整描述

2 回答

?
达令说

TA贡献1821条经验 获得超6个赞

$_SESSION["shopping_cart"]['product']如果未定义(未设置)则定义。


session_start();

include 'db.php';

$status = 1;

// here

if (!isset($_SESSION["shopping_cart"]['product'])) {

    $_SESSION["shopping_cart"]['product'] = [];

}


// more code here...



$cartArray = array(

    'id'=>$id,

    'name'=>$name,

    'price'=>$price,

    'image'=>$image,

    'quantity'=>1

);


// `array_push` works with array by reference

// so there's no need to reassign this variable

array_push($_SESSION["shopping_cart"]['product'], $cartArray);

$status = 1;


查看完整回答
反对 回复 2023-10-22
?
噜噜哒

TA贡献1784条经验 获得超7个赞

您的代码看起来不错,但您需要将 session_start() 放在 <?php 标记之后。

确保此函数之前没有任何输出(甚至是空格符号等)。

所以改变:

<?php
session_start();

到:

<?php session_start();


查看完整回答
反对 回复 2023-10-22
  • 2 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信