2013-03-27 158 views
0

如何從1表格插入2表格中?從1表格中插入2表格

我想提交表格:畫廊和貓。

這是我剛剛提交到圖庫中的代碼。如何將信息同時添加到貓表中?

$sql = 'INSERT INTO gallery (image_url, image_name, image_description) 
VALUES (?, ?, ?)'; 


$stmt = $conn->stmt_init(); 
if ($stmt->prepare($sql)) { 

$stmt->bind_param('sss', $_FILES['upload']['name'], $_POST['image_name'],  
$_POST['image_description']); 
$OK = $stmt->execute(); 

} 

我該怎麼做這個:

$sql_2 = 'INSERT INTO cat (cat_name) VALUES (?)'; 
+2

那麼你卡在哪裏?在$ sql_2中繼續並綁定類別並執行它。 – Rikesh 2013-03-27 04:28:13

+0

好的,我在哪裏?裏面,如果聲明?或者做一個新的? – 2013-03-27 04:36:26

+0

我想做一個新的。 – Rikesh 2013-03-27 04:38:17

回答

-1

不,您不能在一個MySQL命令中插入多個表。但是,您可以使用交易。

BEGIN INSERT INTO的用戶(用戶名,密碼) VALUES( '測試', '測試') INSERT INTO配置文件(用戶ID,生物,主頁) VALUES(LAST_INSERT_ID(), '世界,你好!',「 http://www.stackoverflow.com'); COMMIT;

查看LAST_INSERT_ID以重用自動增量值。 編輯:你說過:「畢竟這一次試圖找出它,它仍然不起作用。我不能簡單地把剛剛生成的ID放在$ var中,並將$ var放在所有MySQL命令中?」

讓我解釋:有3種可能的方式在這裏:

1 /是你在上面看到的代碼。這在MySQL中完成,而第二個語句中的LAST_INSERT_ID將自動成爲插入到第一個語句中的自動增量列的值。

不幸的是,當第二個語句本身在帶有自動增量列的表中插入行時,LAST_INSERT_ID將更新爲表2的值,而不是表1.如果您之後仍然需要表1的值,將不得不將其存儲在一個變量中。這導致我們的方式2和3:

2 /將庫存的LAST_INSERT_ID在MySQL變量:

A/INSERT B/SELECT LAST_INSERT_ID到@mysql_variable_here C/INSERT INTO表2(@mysql_variable_here d/INSERT INTO表3(@mysql_variable_here ...

3 /將庫存在一個PHP變量LAST_INSERT_ID(或任何語言,可以連接到數據庫,你的選擇):

A/INSERT B /用你的語言通過在MySQL中執行該文字語句來檢索LAST_INSERT_ID,或者使用例如php的mysql_insert_i d()這是爲你做的C/INSERT()

+0

http://stackoverflow.com/questions/15651864/insert-into-2-tables-from-1-form/15652135#15652135這個鏈接將幫助你 – Naveen 2013-03-27 05:02:10

+0

我認爲這是BEGIN; INSERT INTO ...... – 2013-03-27 05:07:29

+0

檢查此鏈接http://stackoverflow.com/questions/15651864/insert-into-2-tables-from-1-form/15652135#15652135你會得到你的答案 – Naveen 2013-03-27 05:12:49

1

在上面的代碼之後,只需要初始化一個新語句,綁定它並執行。您可以使用現有連接($conn)。 $sql$stmt變量已經通過插入到第一個表中完成了他們的工作,因此只需將它們重置爲第二個插入。

... your code as posted above, followed by: 

$sql = 'INSERT INTO cat (cat_name) VALUES (?)'; 
$stmt = $conn->stmt_init(); 
if ($stmt->prepare($sql)) { 
    $stmt->bind_param('s', put your cat_name value here); 
    $OK = $stmt->execute(); 
} 

要記住的重要一點是第二次插入就像第一次插入:您必須初始化它,綁定它並執行它。

+0

謝謝,船長,用常識回答;) – 2013-03-27 05:25:09

+0

不幸的是,你的回答並不能解決問題。 – 2013-04-17 07:56:43