棘手的MySQL插入和更新
问题描述:
我正在为我的网站做一个购物车。
当用户将东西添加到购物车时,它应该将item_id和数量插入到我的数据库中的项目列中。
物品栏应该持有这样的字符串:棘手的MySQL插入和更新
1:5;6:2;13:1
ITEM_ID:数量; ITEM_ID:数量等
插入部分我已经得到了,但是当用户想要查看的车,字符串需要被分成数组,并从另一个表中提取的项目
阵列例如:
1 => 5,
6 => 2,
13 = 1
心中已经TR ied使用spliti(“;”$ raw);
但没有得到我想要的。
而用户从购物车更新/删除产品时也是这样。
当用户更新/删除产品时,必须搜索产品内部的字符串并查找产品的当前位置。
任何帮助将
答
首先,我认为在您的订单/购物车表中将您的物品作为字符串不是一个好主意。你用这种方式遇到了很多问题(你已经遇到了一对夫妇)。
最好是有hasMany
的关系。以下所示的设计类似的东西是理想的。
Order Table : id, date, total, more, fields
OrderItem Table : id, order_id, item_id, value, more, fields //item_id is a ref to your Items/Product table
这可以让你的项目正确链接到您的订单,你可以做你的插入和更新没有问题。
至于当前的问题,则需要两次拆呢
$items = 1:5;6:2;13:1;
$items_arr = explode(';', $itemrs);
$new_items = array();
foreach ($iterms_arr as $item) {
$pieces = explode(':', $item);
//might want to do some error checking on whether the indices exist
$new_items[$pieces[0]] = $pieces[1];
}
请重新考虑你的数据模型 - 存储“1:5; 6:2; 13:1”中的表保证给你在您尝试访问/修改您的数据时,将来会遇到很多令人头痛的问题。 – 2011-04-13 10:57:27
请不要在标题中写下“[PHP] [MySQL]”。这就是标签的用途。 – 2011-04-13 10:57:59