我可以选择将多行发送到表中,我使用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:我使用自动增量
答案 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是连接变量