从1个表单插入2个表

时间:2013-03-27 04:22:49

标签: php mysql sql-server mysqli

如何从1个表格插入2个表格?​​

我想提交到表格:画廊和猫。

这是我提交到图库的代码。如何同时向cat表添加信息?

$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 (?)';

3 个答案:

答案 0 :(得分: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();
}

要记住的重要一点是第二个插入就像第一个插入一样:你必须初始化它,绑定它并执行它。

答案 1 :(得分:0)

您应该使用交易as demonstrated here

答案 2 :(得分:-1)

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

BEGIN INSERT INTO用户(用户名,密码)   价值观('测试','测试') INSERT INTO个人资料(userid,bio,homepage)   VALUES(LAST_INSERT_ID(),'Hello world!','http://www.stackoverflow.com'); COMMIT;

查看LAST_INSERT_ID以重用自动增量值。 编辑:你说“毕竟这次试图解决它,它仍然无法工作。我不能简单地将刚刚生成的ID放在$ var中并将$ var放在所有MySQL命令中吗?” p>

让我详细说明:这里有3种可能的方式:

1 /您是上面看到的代码吗?这在MySQL中完成所有操作,第二个语句中的LAST_INSERT_ID将自动成为第一个语句中插入的autoincrement-column的值。

不幸的是,当第二个语句本身在带有自动增量列的表中插入行时,LAST_INSERT_ID将更新为表2的行,而不是表1.如果您之后仍需要表1,我们将必须将其存储在变量中。这引出了我们的方法2和3:

2 /将在MySQL变量中存储LAST_INSERT_ID:

A / INSERT B / SELECT LAST_INSERT_ID到@mysql_variable_here C / INSERT INTO table2(@mysql_variable_here D / INSERT INTO table3(@mysql_variable_here ...

3 /将LAST_INSERT_ID存入php变量(或任何可以连接到您选择的数据库的语言):

A / INSERT B /使用您的语言来检索LAST_INSERT_ID,或者通过在MySQL中执行该文字语句,或者使用例如php的mysql_insert_id()来为您执行此操作C / INSERT()