如何从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 (?)';
答案 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()