我有两个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();
答案 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
。