如何将数据插入2个不同的表(php mysql)

时间:2014-11-17 13:28:28

标签: php mysql database sql-insert

2表:

1。 BOOKS_IN

  • BOOKS_in_ID,
  • DATE,
  • USERID

2。 BOOKS_IN_DETAIL

  • BOOKS_in_ID,
  • BOOK_ID,
  • STOCK

BOOKS_in_ID是主键,我需要BOOKS_in_ID自动插入BOOKS_IN_DETAIL。 在这里,是否可以使用单个查询将记录插入到2个表中?

谢谢你的建议。

4 个答案:

答案 0 :(得分:1)

您仍然需要两个INSERT语句,但听起来您希望从第一个插入中获取IDENTITY并在第二个插入中使用它,在这种情况下,您可能需要查看{ {1}}或OUTPUThttp://msdn.microsoft.com/en-us/library/ms177564.aspx

Src和可能的副本:SQL Server: Is it possible to insert into two tables at the same time?

您也可以将OUTPUT INTO用于PDO。

一个小例子:

LastInsertId()

Src:http://php.net/manual/en/pdo.lastinsertid.php

或者获取mysqli中的最后一个插入ID:

$sql = "INSERT INTO city (`city`) VALUES ('Paris') ON DUPLICATE KEY UPDATE `city` = 'Paris"; 
$dbh->query($sql); 
echo $dbh->lastInsertId(); 

Src:http://php.net/manual/en/mysqli.insert-id.php

答案 1 :(得分:1)

您需要调用适当的方法来获取最后插入的ID。

假设您使用PDO,则需要调用方法lastInsertId。 $books_in_id = $pdo->lastInsertId();

如果您使用mysqli_*

$books_in_id = $mysqli->insert_id;扩展名

编辑:如果您使用mysql_*版本(已弃用),请先升级到mysqli_ *,或签入documentation

答案 2 :(得分:0)

你必须坚持使用mysql吗?因为如果你可以使用mysqli,你可以使用multi_query(),它允许你一次执行多个查询 链接:http://php.net/manual/en/mysqli.quickstart.multiple-statement.php

答案 3 :(得分:0)

不,只有一个INSERT查询无法实现。

您可以按照以下步骤操作

  1. 写两个不同的查询并执行它们
  2. 创建执行两个INSERT查询的存储过程
  3. 对于第一点,您可以使用LAST_INSERT_ID()功能添加外接键