2014-09-07 119 views
0

我不完全搞清楚如何做后我做什么。所以我做的是一个在线游戏。当用户购买一辆新车时,我做了一个INSERT:更新另一个表时,另一个更新

$c->query("INSERT INTO user_cars (carid, userid, acc, speed) VALUES ('$buyid','$id','$acc','$speed')"); 

现在我还有一个表,我需要上面的查询从查询​​后插入到正确的信息above.What我需要的是carid .The用户可以有超过2 cars.What我现在应该做的?

+2

创建使用ID在其他自动插入 –

+0

任何良好的网站上触发信息触发? – Kirilas

+0

@Kirilas http://dev.mysql.com/doc/refman/5.5/en/trigger-syntax.html包含mysql触发器的很好的示例 –

回答

1

你有多种选择:

  1. 您可以构建一个触发器中插入表2中新行,当行插入汽车表(点击此处了解更多http://dev.mysql.com/doc/refman/5.5/en/trigger-syntax.html
  2. 有此功能mysql_insert_id ()返回最后插入的ID(在这里阅读更多http://php.net/manual/en/function.mysql-insert-id.php
  3. 如果使用PDO,有它
一个smillar命令
+0

是的,我想我会用'mysql_insert_id()',我认为这会更容易。 – Kirilas

+0

@Kirilas mysql_函数已被弃用,但 –

+0

@Kirilas,Brian是对的,你应该改为mysqli或者更好的PDO,这将帮助你在项目变大的时候很多 –

1

这是您想要创建的触发器的基本演示。为了说明的目的,我还将ddl和一个示例插入到user_cars表中,以显示另一个表,我称之为“your_other_table”,它接收插入user_cars表的插入(只是carid值)。

小提琴: http://sqlfiddle.com/#!9/f76a7/1/0

(通知 “your_other_tabe” 怎么有一行与插入到 “user_cars” 的carid,尽管没有直接插入到本身)

delimiter // 

create table user_cars 
(
carid int, 
userid int, 
acc int, 
speed int, 
constraint id_pk primary key (carid, userid) 
)// 

create table your_other_table 
(
carid int 
)// 

create trigger your_trigger_name before insert on user_cars 
    for each row begin 
     insert into your_other_table (carid) 
      values (new.carid); 
end 
// 

insert into user_cars values 
(1, 2, 3, 99)// 

delimiter ; 

select * 
from your_other_table; 

输出:

| CARID | 
|-------| 
|  1 | 

这是创建触发器上面的SQL的唯一部分:

delimiter // 

create trigger your_trigger_name before insert on user_cars 
    for each row begin 
     insert into your_other_table (carid) 
      values (new.carid); 
end 
// 

delimiter ; 
+0

感谢您的努力,但是我只用两行PHP来处理它,使用'$ mysqli-> insert_id;' – Kirilas

+0

@Kirilas选择显然取决于您,但我认为触发器更符合您的想法去做。上面的代码大部分是创建表格并插入一个示例行(仅用于说明而不涉及创建触发器)。触发器的创建仅仅是几行代码,它位于数据库端,它应该在哪里,而不在页面的代码上。 –