增加订单输入的表列

时间:2011-10-27 01:02:50

标签: php mysql methods

我有一张存储订单的表。
id(自动递增)oid(不自动递增),然后是订单详细信息 一些订单可以有多个条目,这就是为什么我有一个ID和一个Oid(订单ID) 因此,如果您订购3个xwidgets和4Zwidgets,它们将使用相同的OID

我使用以下代码分配下一个OID号码,我想知道这是否是最佳方式:

$maxquery = mysql_query("SELECT MAX(oid) FROM ordr") or die(mysql_error());
$maxresult = mysql_fetch_array($maxquery);
$maxid = $maxresult['MAX(oid)'];
$oid = $maxid + 1; -- this gives me a new OID for the next entry since i can not auto increment this column

1 个答案:

答案 0 :(得分:1)

您可能想要使用auto-increment columns。这将允许您插入数据,MySQL将为您选择一个索引。您需要对数据进行非规范化才能执行此操作。

您需要两个表:ordersorder_items,其中:

orders
------
order_id
[any other columns]


order_items
-----------
item_id
order_id
[any other columns]

使用orders NULL将订单插入order_id表,并记录MySQL设置的order_id。现在使用您拥有的order_item插入order_id,然后让它自动生成item_id

这样,MySQL将生成数字,因此您无需担心两个订单尝试使用相同的订单ID。此外,订单中的每个商品都不会重复任何订单信息。