我正在创建论坛服务(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
值?
答案 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 在上一个查询中使用
答案 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;
希望这有帮助。