$q4 = "SELECT order_id FROM menu WHERE category_id = $cat_id";
$r4 = mysqli_query($dbc, $q4);
$num_items = mysqli_num_rows($r4)+1;
$q5 = "INSERT INTO menu (category_id, order_id, item, price, date_added, name) VALUES ('$cat_id', '$num_items', '$item', $price, NOW(), $name)";
$r5 = mysqli_query($dbc, $q5);
现在我正在做一个初始查询以获取表中的总行数,这样我就可以将正确的order_id添加到新插入的行中。
基本上,我想保留1,2,3,4,以便用户可以自己编辑订单
有没有办法在一个查询中执行此操作?或许你们知道更好的方法吗?
由于
答案 0 :(得分:0)
您应该在order_id
上设置AUTO_INCREMENT
。然后,只要您没有明确指定一个值,MySQL就会自动将下一个值分配给order_id
。
如果还没有,您还应将order_id
设置为唯一。
答案 1 :(得分:0)
A。在category_id, order_id
上使用复合主键,并在其上构建自动增量,例如
create table menu
(
category_id int(10) unsigned default 0,
order_id int(10) unsigned auto_increment,
item int(10) unsigned default 0,
price double(10, 2) unsigned default 0,
date_added datetime,
name varchar(255),
primary key(category_id, order_id)
);
B:在插入过程中使用子查询,例如
insert into menu
(category_id, item, price, date_added, name, order_id)
select
$category_id as category_id,
$item as item,
$price as price,
now() as date_added,
$name as name,
(select max(order_id) from menu where category_id=$category_id)+1 as order_id
from dual;