2014-11-01 31 views
0

比如我有兩個數據庫:如何獲得ID,如果它沒有添加到數據庫呢? (MySQL的)

客戶表(ID是自動增加)

--------------------------------------- 
----- id ----- name ----- surname ----- 
----- 1 ----- BOB ----- test1 ----- 
----- 2 ----- Jhon ----- test2 ----- 
----- 3 ----- Nick ----- test3 ----- 
--------------------------------------- 

和產品表(編號不爲空,你必須手動添加)

*
--------------------------------------------- 
----- id ----- product ----- date  ----- 
----- 1 ----- orange ----- 10/10/2014 ----- 
----- 2 ----- apple ----- 12/10/2014 ----- 
----- 3 ----- melon ----- 26/10/2014 ----- 
--------------------------------------------- 

*示例組成,我有更復雜和更大的表。

的問題是:

使用一個add.php文件我想補充

名稱= ____ 姓= _____

,並從現場那裏姓名GET ID後(來自表客戶)被添加並使用它使用相同的ID添加產品和日期(到產品表)。

我理解如何將信息添加到多個表:HERE

但如何將表1和表使用ID從表1 後添加信息添加tables2這就是我迷惑。

+1

使用mysqli_insert_id()從最後一次查詢中獲取ID – 2014-11-01 12:40:27

+0

@AleksandarVasić:那就是答案!你也可以選擇最高的ID(max(id)),但使用mysql_insert_id()是更清晰的方式。一點谷歌搜索也會回答這個問題。 – C4u 2014-11-01 12:51:22

+0

如果可能,請你簡單地使用mysqli_insert_id()來做簡單的例子。用我的問題作爲示例。 – Denis 2014-11-01 12:53:56

回答

1

使用mysql_insert_id();它給你最後一次查詢的ID例如從

http://php.net/manual/en/function.mysql-insert-id.php

php.net

<?php 
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db('mydb'); 

mysql_query("INSERT INTO mytable (product) values ('kossu')"); 
printf("Last inserted record has id %d\n", mysql_insert_id()); 
?> 

所以basicly你執行的第一個查詢,獲取ID與mysql_insert_id()和寫入第二個查詢

+0

它應該是mysql_insert_id($ link)??? – Denis 2014-11-01 13:01:41

+0

$ myid = mysql_insert_id(); 並且您將在$ myid中有最後一個查詢的標識 – 2014-11-01 13:02:34

+0

http://www.w3schools.com/php/func_mysqli_insert_id.asp – Denis 2014-11-01 13:03:37

2

要插入第一行,請照常使用此查詢。

INSERT INTO customer (name, surname) 
       VALUES ('Marie', 'Antoinette') 

它將爲您的連接設置LAST_INSERT_ID()值。然後插入你的下一行使用這個查詢,其中包含LAST_INSERT_ID()

INSERT INTO product (customer_id, product, date) 
      VALUES (LAST_INSERT_ID(), 'Cake', '1770-04-18') 

這可讓您在不明確檢索LAST_INSERT_ID的情況下執行第二次插入。但是如果你爲一個客戶有多個product行,你需要在你的SQL中稍有不同。

INSERT INTO customer (name, surname) 
       VALUES ('Marie', 'Antoinette'); 

SET @custid =: LAST_INSERT_ID(); 

INSERT INTO product (customer_id, product, date) 
      VALUES (@custid, 'Cake', '1770-04-18') 
INSERT INTO product (customer_id, product, date) 
      VALUES (@custid, 'Guillotine', '1770-04-19') 

這是一個很好的辦法,因爲它可以在繁忙的系統上正常工作,其中多個數據庫客戶端可能會插入客戶。 LAST_INSERT_ID()由MySQL連接通過連接維護。這也很好,因爲您不必檢索並返回最後插入的id值。

相關問題