我如何从插入的数据中获得最后的id ?


How do i get the last ID's from the inserted data?

我有一个选项发送多行到一个表,我使用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,因为它们是在同一时间发送的。

我不能把$last_id变量在foreach循环,我该怎么办?

你能试试这样吗?

$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();

id应该在inserteids中

你不能。

只保存插入数据之前的最后一个索引id,然后再执行一次,并选择该范围内的所有id。

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

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

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

使用PHP PDO获取最后插入id

<>以前pdo -> lastInsertId ();之前

使用mysqli获取最后插入id

<>以前mysqli -> insert_id;之前

$pdo和$mysqli是连接变量