如何使用数据库中的数据填充会话数组?

时间:2016-03-30 06:50:39

标签: php mysql arrays session

我知道这个问题对于有经验的人来说可能是非常基本的。但是我还在学习过程中,所以我需要一些帮助。

我想使用来自数据库的数据填充会话数组。会话数组中可以有多个项目。我试图这样做 -

$sql = mysqli_query($con, "SELECT * FROM `purchase_info_details` WHERE  `purchase_details_id` = '$pur_det_id'");

while ($row = mysqli_fetch_array($sql)) {

   $data[$i]['purchase_details_id'] = $row['purchase_details_id'];
   $data[$i]['cid'] = $row['id'];
   $data[$i]['item_id'] = $row['item_id'];
   $data[$i]['unit_id'] = $row['unit_id'];
   $data[$i]['quantity'] = $row['quantity'];
   $data[$i]['price'] = $row['price'];
   $data[$i]['conv_rate'] = $row['conv_rate'];

   $_SESSION['list1_data']['purchase_details_id'] = $data[$i];
 }

仅供参考:purchase_details_id是主键。此代码部分工作。我的意思是我只从会话数组中的表中获取一行,但我需要从表中获取与我的SQL查询匹配的所有行。

我一直在网上搜索相关的例子,但还没找到。我真的坚持了它,无法找到任何解决方案。请帮忙!

谢谢!

5 个答案:

答案 0 :(得分:1)

问题是您总是在覆盖会话数组中的相同数据。循环完成后,您将在会话数组中拥有数据集的最后一行。

每次都可以在会话数组中添加新行:

$_SESSION['list1_data'][] = $data[$i];

或者如果您想要数据中的特定键(假设它是唯一的):

$_SESSION['list1_data'][$row['purchase_details_id']] = $data[$i];

答案 1 :(得分:0)

这样做:

$_SESSION['list1_data'][$row['purchase_details_id']] = $data[$i];

这样您就可以直接访问会话中的特定详细信息ID。例如:

$row = $_SESSION['list1_data'][1]; //row for the id = 1

专业提示:始终检查是否设置了密钥,否则您将收到警告=)

答案 2 :(得分:0)

尝试这样的事情

    while ($row = mysqli_fetch_array($sql)) {

   $data[$i]['purchase_details_id'] = $row['purchase_details_id'];
   $data[$i]['cid'] = $row['id'];
   $data[$i]['item_id'] = $row['item_id'];
   $data[$i]['unit_id'] = $row['unit_id'];
   $data[$i]['quantity'] = $row['quantity'];
   $data[$i]['price'] = $row['price'];
   $data[$i]['conv_rate'] = $row['conv_rate'];

   $_SESSION["db_data"][$i] = $data[$i];// or just $_SESSION[$i] = $data[$i]
 }

答案 3 :(得分:0)

$_SESSION['list1_data']['purchase_details_id'] = $data[$i]; always overwrite and you get only last value . use $_SESSION['list1_data'][$row['purchase_details_id']] = $data[$i];    

在完成循环时将数组分配给会话。如下所示

 $_SESSION['list1_data'] = $data;

 or as you say product_id is unique then why you use $i ? (use $data[$row['purchase_details_id']]['purchase_details_id'] = value , use $data[$row['purchase_details_id']]['cid'] = value etc ...)

答案 4 :(得分:0)

确保初始化session()方法,并且可以根据需要制作2维或3维数组,以便在评论中将数据库值保持为@ B-and-P。

感谢