如何从插入的数据中获取最后一个ID?

时间:2014-06-28 13:45:38

标签: php mysql sql

我可以选择将多行发送到表中,我使用foreach来执行此操作:

if (is_array($add['jobname'])) {
$insert = "INSERT INTO job_offers (job_category, status) VALUES ";

foreach ($add['job_name'] as $key => $value) {

$insertedval[] = "
('" . safe($add['job_category'][$key]) . "', 
 '" . safe($add['status'][$key]) . "')";

}
}
$insert .= implode($insertedval, ",");

$last_id = db_query($insert, '+id?'); //gets the last generated ID, its a function that i created, and working great.

问题是我想得到最后一个ID,而且我得到了,但我要在数据库中插入多行,我想从所有的ID中获取ID插入值,因为它们是同时发送的。

我无法将$ last_id变量放在foreach循环中,我该怎么办?

ps:我使用自动增量

3 个答案:

答案 0 :(得分:1)

你能尝试这样的事吗?

$db = new PDO("mssql:host=$host;dbname=$dbname, $user, $pass");
$db->beginTransaction();
$stmt = $db->prepare('INSERT INTO job_offers (job_category, status) VALUES (?, ?)');

$insertedIds = array();
foreach ($add['job_name'] as $key => $value) {
    $stmt->execute($add['job_category'][$key], $add['status'][$key]));
    $id = $db->lastInsertId();
    array_push($insertedIds, $id);
}

$db->commit();

ids应该在insertedIds中。

答案 1 :(得分:0)

你不能

只保存插入数据之前的最后一个索引ID,然后再选择之后再选择该范围之间的所有ID。

SELECT ID FROM job_offers ID BETWEEN last-before-insert AND last-after-insert

答案 2 :(得分:0)

您不需要自定义函数来获取最后一个插入ID,php mysqli和php PDO扩展中已经内置了一个。

据我所知,最后一个插入ID是会话感知的,这意味着您将只从当前插入请求中获取最后一个插入。

使用PHP PDO获取最后一个插入ID

$pdo->lastInsertId(); 

使用mysqli

获取最后一个插入ID
$mysqli->insert_id; 

$ pdo和$ mysqli是连接变量