PHP和MySQL子查询的最佳实践

PHP和MySQL子查询的最佳实践,php,mysql,Php,Mysql,我试图找出做下一个例子的最佳实践是什么 我有一个带有2个mysql表的订单系统sh_orders是用于订单头信息的MySQL表,结构如下: id | doc_nr | order_date | date_added 然后,我有SHU订单项目,结构与此类似: id | order_id | oPos | product | quantity | date_added 我的问题:向新订单添加职位时,生成新订单id的最佳方法是什么? 现在,我使用的是一个“TEMP”。md5(uniqid())用于

我试图找出做下一个例子的最佳实践是什么 我有一个带有2个mysql表的订单系统
sh_orders
是用于订单头信息的MySQL表,结构如下:

id | doc_nr | order_date | date_added
然后,我有SHU订单项目,结构与此类似:

id | order_id | oPos | product | quantity | date_added
我的问题:向新订单添加职位时,生成新订单id的最佳方法是什么? 现在,我使用的是一个
“TEMP”。md5(uniqid())
用于订单的新ID,在用户保存订单后,我使用
mysql\u insert\u ID()更新sh\u orders\u项目
但是,在这种情况下,我将面临来自未保存订单的带有临时订单id的过时行


有人能给我一个更好的解决方案吗?

在下单时插入第一个表(保存另一个表),使用MySQL的内置程序,您可以获得插入主表的id值,然后使用它保存子元素。这样,您就避免了孤儿或家长记录的任何可能性


如果需要的话,MySQL还可以级联删除链接数据,以确保在正常操作过程中可能通过或孤立的任何内容都被截断。

我不确定我是否完全理解您的意思。在创建订单时,订单未保存,因此我没有任何id可使用,订单行必须插入临时id…因此创建一个临时id并在父表中使用状态标志。是的,这是一个解决方案,但我不希望SHU orders表中的id之间存在间隙。如果我创建了一个订单,比如id 4,但我没有保存它,那么下一个订单的id将为5.“我正在使用一个“TEMP_u2;”.md5(uniqid())”-为什么?Uniqid()本身就足够了,md5散列会减少它的唯一性并消耗CPU周期。这与子查询有什么关系?sh_orders_项不是子查询的结果吗?我推断它是一个表-即使作为查询,也不意味着解决方案将使用子查询。