在mysql中一次将数据插入两个表

时间:2015-04-12 10:16:53

标签: php mysql

我有两个mysql表:

table1_id (PK) |  table1_data

table2_id (PK) |  table1_id (FK) | table2_data

并且它们必须一起创建以表示单个对象。主键是自动递增的,所以当我继续创建table2时插入table1_data后,如何才能获得正确的,新创建的table1_id值?

我在php中这样做:

$stmt = $conn->prepare("INSERT INTO table1 (`table1_data`) VALUES (:data)");
$stmt->bindParam(':data', $data);
$stmt->execute();

$stmt2 = $conn->prepare("INSERT INTO table2 (`table1_id`,`table2_data`) VALUES (:id,:data)");
$stmt2->bindParam(':id', $table1_id); //how can I get the id of row just created above by stmt?
$stmt2->bindParam(':data', $data2);
$stmt2->execute();

1 个答案:

答案 0 :(得分:1)

您可以使用PDO::lastInsertId方法。执行第一次插入后调用它,所以得到:

$stmt = $conn->prepare("INSERT INTO table1 (`table1_data`) VALUES (:data)");
$stmt->bindParam(':data', $data);
$stmt->execute();

$table1_id = $conn->lastInsertId();

然后,您可以在第二个查询中使用$table1_id