我有2张桌子。在一个表中我添加事件,ID是自动增量。第二个表包含个人事件。
因此,如果我创建事件,它会添加到两个表中。
下面是我的代码示例。首先,我向一般表添加一个新事件。然后我想将相同的事件添加到schedule表中,但我需要获取刚刚添加的事件的ID。所以我执行第二个查询。
是否有任何优化方法如何执行此操作或至少获取刚添加的事件的ID而无需额外查询?
mysql_query("INSERT INTO events (title, description, user) VALUES ('$title', '$description', '".$user['id']."')");
$id = mysql_fetch_array(mysql_query("SELECT id FROM events WHERE user='".$user['id']."' ORDER BY date_added DESC LIMIT 1"));
mysql_query("INSERT INTO schedule (uid, event) VALUES ('".$user['id']."', '".$id['id']."')") or die(mysql_error());
答案 0 :(得分:2)
mysql_insert_id()
就是你所追求的,我想......
您还可以在第二个INSERT
查询中使用MySQL原生LAST_INSERT_ID()
:
mysql_query("INSERT INTO schedule (uid, event) VALUES ('".$user['id']."', LAST_INSERT_ID())") or die(mysql_error());
...并跳过完全在PHP中检索ID。
答案 1 :(得分:0)
没有“优化”的方式
有正确获取插入ID的方式,称为mysql_insert_id()
。
答案 2 :(得分:0)
我猜您正在寻找最后插入的ID:LAST_INSERT_ID()
答案 3 :(得分:0)
本机php函数mysql_insert_id()肯定会这样做
http://php.net/manual/en/function.mysql-insert-id.php
考虑在交易中包装?在高并发性下,使用此
可能会导致错误的ID