如何在mysql数据库中存储数组

时间:2014-04-26 16:11:02

标签: php mysql arrays database

我有这个会话变量,在客户从产品列表中选择之后,该变量包含一个数组,该数组将当前产品存储在购物车中。

这是数组。

echo $_SESSION['cart'];

OUTPUT:
Array (
 [5] => Array ( [quantity] => 1 [price] => 45.00 )

 [7] => Array ( [quantity] => 1 [price] => 18.00 ) 
 ) 1

此数组显示购物车中有两件商品,产品编号为5和7,可以接受订购数量和产品价格。

我想将此数组保存在表中,我可以保存并重新收集此信息。谢谢

3 个答案:

答案 0 :(得分:2)

使用serialize

$varible = serialize($_SESSION['cart']);

并将其存储在VARCHAR TYPE

使用unserialze

返回数据时

答案 1 :(得分:0)

$cart = serialize($_SESSION['cart']);

这应该有用;)

答案 2 :(得分:0)

我不会将数组中产品的所有值存储在表格的列中。

我会创建一个表来存储订单。

<强>顺序表

orders

order_id (primary key)
product_id (reference to which product it is in products-table)
quantity
price (price when purchased the product)

根据您的会话:

Array (
 [5] => Array ( [quantity] => 1 [price] => 45.00 )

 [7] => Array ( [quantity] => 1 [price] => 18.00 ) 
 )

如果5和7是你的实际产品,那么你应该在orders-table中存储类似这样的值:

INSERT INTO orders (product_id, quantity, price) VALUES (5, 1, 45000);
INSERT INTO orders (product_id, quantity, price) VALUES (7, 1, 18000)

如果您的产品成本为45.50,则应将其存储为:

INSERT INTO orders (product_id, quantity, price) VALUES (5, 1, 45500);

这是一个更好的方法的原因是,稍后在上提取有关任何订单的信息要容易得多。 (例如,返回特定产品的所有销售额)

如果您想获得特定订单的总数,只需执行SQL:

SELECT SUM(price) FROM orders WHERE order_id = 14(订单14的示例)

如果您想要返回订单的所有值,您只需执行以下操作:

SELECT * FROM orders WHERE order_id = 14(订单14的示例)