MySQL查询优化与统一ID有关

时间:2012-03-20 15:33:40

标签: php mysql database

我有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());

4 个答案:

答案 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