是否有更好或更快的方式来返回ID?
列客户是唯一的
$inserted_id = null;
if( !$mysqli->query("INSERT INTO users (id,customer) VALUES(null,'foo')" ){
// Is it possible to avoid this 2nd query?
$result = $mysqli->query("SELECT id FROM users WHERE customer='foo'");
$inserted_id = $result->fetch_assoc()['id'];
} else {
$inserted_id = $mysqli->insert_id;
}
答案 0 :(得分:4)
插入后使用$last_id = $mysqli->insert_id();
。这是最后生成的自动增量。您的代码不准确。针对面向对象的视角进行了更新。
答案 1 :(得分:1)
当尝试重复记录UPDATE
时,您可以将插入查询修改为INSERT
自动递增列。
INSERT INTO users (id,customer)
VALUES (null,'foo')
ON DUPLICATE KEY UPDATE
id = LAST_INSERT_ID(id)
id = LAST_INSERT_ID(id)
将返回上一个AUTOINCREMENT
的{{1}}列的值,并设置mysqli_insert_id的值。这将使所有插入期间的最后一个插入ID都可用。
修改了您的代码:
INSERT