编辑:
这个问题的标题最初是:
条令如何知道MySQL中最后插入的ID?
和
教条
ORM映射器。经过一番挖掘,我发现这个问题与
教条
但要
PDO-MySQL
,
MySQL C API
最后-到MySQL客户机-服务器通信。我已决定更改标题,所以也许有人会找到他/她的问题的答案。
对于那些不使用教义的人:我很好奇,为什么要这样说:
mysql_query("INSERT INTO category (name) VALUES('cat')");
echo mysql_insert_id();
或类似:
$pdo->exec("INSERT INTO category (name) VALUES('cat')");
echo $pdo->lastInsertId();
只会导致一个位置(没有单独的
SELECT LAST_INSERT_ID()
)在日志中:
1701 Query INSERT INTO category (name) VALUES ('cat')
原始问题:
我有两张桌子:
category(id,name)
product(id, name, categoryId)
我创建了新的类别对象和产品对象。我将类别对象分配给产品对象。我没有设置任何ID:
$product = new Product();
$product->name = 'asdf';
$category = new Category();
$category->name = 'cat';
$product->Category = $category;
之后我刷新了连接并检查了mysql日志:
1684 Query START TRANSACTION
1684 Query INSERT INTO category (name) VALUES ('cat')
1684 Query INSERT INTO product (name, categoryid) VALUES ('asdf', '312')
1684 Query COMMIT
条令怎么知道,新创建的类别ID是312?日志中没有其他内容。