MySQL - 插入值(如果不存在)或更新并返回id

时间:2015-12-23 17:03:58

标签: php mysql

我有一张看起来像f.ex.的表。像这样:

id(primaryKey,auto_increment)|水果|颜色

如果 fruit 值不存在,我想插入 fruit color 的值,否则我想更新颜色并返回插入或更新的行的 id 。

F.ex。如果我有一行:

1234 |苹果|红色

并且想要将苹果的颜色更新为绿色,而不知道已经存在包含苹果的行。我使用这段代码:

$sqli = get_db();
$q1 = "INSERT INTO table (fruit, color) VALUES ('apple', 'green') ON DUPLICATE KEY UPDATE color='green', id=LAST_INSERT_ID(id)";
$r1 = $sqli->query($q1);
$insertedOrUpdatedID = $sqli->insert_id();

我想将现有行更新为:

1234 |苹果|绿色

并取回$ insertedOrUpdatedID中的 id (1234)。

我想我需要以任何方式标记 fruit 列。当我执行此代码时,它总是创建一个新行(123 5 | apple | green)而不更新现有代码或返回已编辑的 id 。< / p>

SOLUTION:

更改水果的类型&#39;从 text varchar(100)并将其KEY设置为UNIQUE可以解决问题。此外,将代码的最后一行更改为:

$insertedOrUpdatedID = mysqli_insert_id( $sqli );

以获得正确的ID。

快乐的编码!

1 个答案:

答案 0 :(得分:2)

如果您想按水果名称更新,请创建水果为 UNIQUE KEY

尝试此查询

REPLACE INTO table_name (fruit,color) VALUES ('apple','green');

INSERT INTO table_name (fruit,color) VALUES ('apple','green') ON DUPLICATE KEY UPDATE color = 'green;