php - 了解Mysql 'on duplicate key'

标签 php mysql insert edit

$update = "insert into mapa_etiquetas (nombre,urlimagen,id_usuario) values('$this->nombre', '$ruta', '$u') on duplicate key update urlimagen=values('$ruta')";

我想避免我通常做的事情

  • 如果存在则选择
  • 如果存在
    • 更新
  • 其他
    • 插入

问题,我写的句子会那样吗?我的看法,如果我打电话

$update = "insert into mapa_etiquetas ('casa','image.png',2) 
                      values('$this->nombre', '$ruta', '$u') 
           on duplicate key update urlimagen=values('$ruta')";
$update = "insert into mapa_etiquetas ('casa','image2.png',2) 
                       values('$this->nombre', '$ruta', '$u') 
           on duplicate key update urlimagen=values('$ruta')";

结果将是表中名称为“casa”的两个元素,对吗? (而不是编辑 urlimagen。因为它会被认为是不同的元素,对吧)

我怎么能通过一个 mysql 语句更新 urlimagen(用于 nombre,iduser 组合),如果不存在,则插入它?

提前致谢!

最佳答案

update urlimagen = values('$ruta') 告诉 MySql 查找名为 value 的列 $ruta。更改您的语句以使用实际列名:

insert into mapa_etiquetas (nombre, urlimagen, id_usuario)
  values ('$this->nombre', '$ruta', '$u'),
    ('$this->nombre', '$ruta2', '$u')
    /*Add more rows here*/
  on duplicate key update
    urlimagen = values(urlimagen)

关于php - 了解Mysql 'on duplicate key',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5474840/

相关文章:

java - 无法将类型 'java.lang.String' 的属性值转换为所需类型 'java.util.Date'

MySQL : INSERT ON DUPLICATE KEY UPDATE - Update not working

php - 如何在同一个表中插入不同的值和新行?

php - Laravel 数据未正确进入数据库

javascript - 聊天应用程序如何在没有重复 ajax 调用的情况下工作?

php - Fusioncharts - 显示有限记录的 2D 列堆栈

mysql - order by 的 SQL 规范中的区分大小写 - oracle 与 mysql

mysql - 如果 Inner Join 为空则显示结果

mysql - 交易陷阱 22

c - 为什么我的排序代码在 c 中不起作用?