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

时间:2016-01-29 16:56:10

标签: php mysql

是否有更好或更快的方式来返回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;

}

2 个答案:

答案 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