插入后从数据库返回id

时间:2012-03-23 12:22:50

标签: database insert return identifier auto-increment

我有一个响应ajax的php并在数据库中插入一行,这就是代码

if($action == "insertCalendarEvents") {
        $calendar_group = $_GET["calendar_group"];
        $event_name = "'" . $_GET["event_name"] . "'";
        $event_datestart = "'" . $_GET["event_datestart"] . "'";
        $event_datestop = "'" . $_GET["event_datestop"] . "'";
        $event_timestart = $_GET["event_timestart"] != "" ? "'" . $_GET["event_timestart"] . "'" : "null";
        $event_timestop = $_GET["event_timestop"] != "" ? "'" . $_GET["event_timestop"] . "'" : "null";
        $event_info = "'" . $_GET["event_info"] . "'";

        require_once("connect.php");
        $query = "INSERT INTO calendar_events (calendar_group, event_name, event_datestart, event_datestop, event_timestart, event_timestop, event_info) VALUES (" . $calendar_group . ", " . $event_name . ", " . $event_datestart . ", " . $event_datestop . ", " . $event_timestart . ", " . $event_timestop . ", " . $event_info . ")";
        $result = pg_query($connect, $query);
        if(!$result)
            die("error 1"); // query error
    }

我想要实现它以使这段代码返回数据库自动递增的id并将其回显给ajax函数,问题是我无法获取最后一个id,因为其他人可能会在我之后插入数据并得到错误的ID .. 我很高兴知道这个问题是否有解决方法 先谢谢你,丹尼尔!

编辑:我想补充说我使用的是PostgreSQL作为数据库,也许它有一个模块可以做到这一点

2 个答案:

答案 0 :(得分:2)

检查http://wiki.postgresql.org/wiki/FAQ#How_do_I_get_the_value_of_a_SERIAL_insert.3F,您似乎可以执行以下查询:

INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id

我假设您在查询资源上调用pg_fetch_assoc()并将其视为SELECT?

答案 1 :(得分:-1)

使用@@ identity或scope_identity获取您插入的最后一个索引。

插入语句后使用select @@identity

http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record/