2014-09-07 145 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選擇顯然取決於您,但我認爲觸發器更符合您的想法去做。上面的代碼大部分是創建表格並插入一個示例行(僅用於說明而不涉及創建觸發器)。觸發器的創建僅僅是幾行代碼,它位於數據庫端,它應該在哪裏,而不在頁面的代碼上。 –