0

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

3 回答 3

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();
}

要记住的重要一点是,第二次插入就像第一次一样:您必须对其进行初始化、绑定和执行。

于 2013-03-27T05:07:24.130 回答
0

您应该使用这里演示的事务。

于 2013-03-27T04:36:38.227 回答
-1

不,您不能在一个 MySQL 命令中插入多个表。但是,您可以使用事务。

BEGIN INSERT INTO users (username, password) VALUES('test', 'test') INSERT INTO profiles (userid, bio, homepage) VALUES(LAST_INSERT_ID(),'Hello world!', ' http://www.stackoverflow. com '); 犯罪;

查看 LAST_INSERT_ID 以重用自动增量值。编辑:您说“经过这么长时间试图弄清楚,它仍然不起作用。我不能简单地将刚刚生成的 ID 放入 $var 并将 $var 放入所有 MySQL 命令中吗?”

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

1/ 是你在上面看到的代码。这一切都在 MySQL 中完成,第二个语句中的 LAST_INSERT_ID 将自动成为第一个语句中插入的 autoincrement-column 的值。

不幸的是,当第二条语句本身在具有自增列的表中插入行时,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 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 ()

于 2013-03-27T04:51:27.363 回答