繁体   English   中英

MySQL INSERT - 获取ID(auto_increment)如果一个值是UNIQUE

[英]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)将返回上一次INSERTAUTOINCREMENT列的值,并设置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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM