重复密钥上的Mysql更新同一行

时间:2017-06-10 13:40:46

标签: mysql

所以我想要做的是,如果图像是重复的以将图像写入image2列,但是在同一行中不是新的,如下面的代码那样。

 $sql = "insert into uploads(description,lat,lng,image,name) 
 values('$name','$lat','$lng','$image','$name')
 ON DUPLICATE KEY UPDATE 
 description=$name,lat=$lat,lng=$lng,image=image2,name=$name";

2 个答案:

答案 0 :(得分:0)

你没有在你的查询中包含id,这是关键,所以总是会是新的,因为它在插入过程中自动被取消

答案 1 :(得分:0)

如果你想通过mysql实现这一点,那么请采用以下方法:

在字段图片上添加唯一索引

ALTER TABLE `uploads`.`test` ADD UNIQUE `imageIndex` (`image`);

然后使用查询:

$sql = "insert into uploads(description,lat,lng,image,name) 
 values('$name','$lat','$lng','$image','$name')
 ON DUPLICATE KEY UPDATE image2=$image

推荐的解决方案之一可以是:

首先执行select查询以检查表中是否存在图像:

$rowWithImage = Select * from uploads where image = '$image';

如果上述结果有效,那么您可以直接上传。

$sql = "update table uploads set image2=$image where id = '$rowWithImage["id"]' "

希望您掌握逻辑,根据应用程序的要求进行微小的语法+逻辑校正。