获取sql中插入行的ID

时间:2014-12-23 19:15:25

标签: php mysql sql

我正在创建论坛服务(https://www.orbitrondev.com/forum/

当有人创建新线程时,它将执行:

// Example values
$UserID = 23123;
$ForumID = 1;
$ThreadName = 'Example title';

$sQuery = 'INSERT INTO threads (user_id, board_id, topic, time, lastPostUserId, lastPostTime)
VALUES ("' . $UserID . '", "' . $ForumID . '", "' . $ThreadName . '", "' . $time . '", "' . $UserID . '", "' . $time . '")';

ID位于thread_id

列中

现在我必须获取插入行的ID(thread_id)。所以我可以创建帖子,并创建帖子我需要ID。

我考虑过让最后一个插入的线程ID加1,所以我有了id,但SQL看起来更精细:P

如何知道新插入行的thread_id值?

2 个答案:

答案 0 :(得分:0)

  

您可以使用以下方法检索最新的AUTO_INCREMENT值   LAST_INSERT_ID()SQL函数或mysql_insert_id()C API函数。   这些函数是特定于连接的,因此它们的返回值是   不受另一个同时执行插入

的连接的影响

http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html

  

mysqli :: $ insert_id - mysqli_insert_id - 返回自动生成的id   在上一个查询中使用

http://php.net/manual/en/mysqli.insert-id.php

答案 1 :(得分:0)

您应该使用mysqli::$insert_id

$mysqli是你的联系;

$result = $mysqli->query($sQuery);
$lastid = $mysqli->insert_id;

虽然在将数据插入数据库时​​应使用prepared statements

注意:您需要在数据库中使用自动递增的ID字段才能使其生效。


你有;

$oResult = $Database->query($sQuery);
$ThreadID = $oResult->insert_id;

哪个不起作用。

您应该使用该连接查找最后插入的ID,如下所示;

$oResult = $Database->query($sQuery);
$ThreadID = $Database->insert_id;

希望这有帮助。