我有一张桌子,看上去像f.ex。像这样:
id(primaryKey,auto_increment)| 水果 颜色
我想插入水果和颜色的值,如果水果值不存在,否则我只想更新颜色并获取插入或更新的行的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)。
我想我需要以任何方式标记水果专栏。当我执行此代码时,它总是创建一个新行(123 5 | apple | green),而不会更新现有行或返回已编辑的id。
解:
将“水果”的类型从文本更改为varchar(100)并将其KEY设置为UNIQUE即可解决此问题。此外,将代码的最后一行更改为:
$insertedOrUpdatedID = mysqli_insert_id( $sqli );
为了获得正确的ID。
祝您编码愉快!
如果要按水果名称更新,则将Fruite创建为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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句