我知道这个问题对于有经验的人来说可能是非常基本的。但是我还在学习过程中,所以我需要一些帮助。
我想使用来自数据库的数据填充会话数组。会话数组中可以有多个项目。我试图这样做 -
$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查询匹配的所有行。
我一直在网上搜索相关的例子,但还没找到。我真的坚持了它,无法找到任何解决方案。请帮忙!
谢谢!
答案 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。
感谢