[英]PHP & MySQL: Insert select result into table with id auto_increment
[英]MySQL INSERT — get the ID (auto_increment) IF one value is UNIQUE
是否有更好或更快的方式来返回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;
}
使用$last_id = $mysqli->insert_id();
插入后。 这是最后生成的自动增量。 您的代码不准确。 更新了面向对象的视角。
当尝试INSERT
重复记录时,您可以将插入查询修改为UPDATE
自动递增列。
INSERT INTO users (id,customer)
VALUES (null,'foo')
ON DUPLICATE KEY UPDATE
id = LAST_INSERT_ID(id)
id = LAST_INSERT_ID(id)
将返回上一次INSERT
的AUTOINCREMENT
列的值,并设置mysqli_insert_id的值。 这将使所有插入期间的最后一个插入ID可用。
修改了你的代码:
$inserted_id = null;
if($mysqli->query("INSERT INTO users (id,customer) VALUES(null,'foo') ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id)" )
{
$inserted_id = $mysqli->insert_id; // Will return last insert ID in case of successful inserts as well as failed inserts due to duplicate key
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.