2013-03-27 157 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