Php 存在时更新查询,不存在时插入
我需要一个带有WHERE语句的update查询,但是如果记录不存在,它应该插入数据 e、 g.Php 存在时更新查询,不存在时插入,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,我需要一个带有WHERE语句的update查询,但是如果记录不存在,它应该插入数据 e、 g.updatetable设置this='that',that='this',其中this='this'和that='that' 我没有唯一的值,我有两列不能出现2次或更多次。让我举个例子: 我有一张桌子: Column1 | Column2 | Column3 --------------------------- 1 | 2 | 500 1 | 3 | 5
updatetable设置this='that',that='this',其中this='this'和that='that'
我没有唯一的值,我有两列不能出现2次或更多次。让我举个例子:
我有一张桌子:
Column1 | Column2 | Column3
---------------------------
1 | 2 | 500
1 | 3 | 500 This is OK because column2 is other than above
2 | 2 | 500 ALSO OK because column1 is other than above!
1 | 2 | 500 NOT OK! Already exists -> need update for Column3! needs to be 1000 now!
正如您在表中所看到的,这两列可以出现多次
有没有这个功能?或者我应该先检查是否有记录?我没有唯一键,因此无法使用。是否这样做
第一火选择查询
select column_name from table where condition
并使用mysqli_num_rows函数对获取数据行进行计数,如果条件错误,则数据集行数将为零,如果数据已获取,则数据集行数将为一。
所以你现在要做的就是展示下面的演示代码
$no_rows=mysqli_num_rows(..);
if($no_rows==1)
{
update query;
}
else
{
insert query;
}
这意味着如果行计数为1,它将更新它,否则它将插入数据。您可以使用插入。在重复密钥更新时
。大概是这样的:
insert into table(this, that)
select 'this', 'that'
on duplicate key update this = values(this), that = values(that);
为此,您需要在指定“行已经存在”的列上设置唯一的索引/约束。你的问题在细节上有点含糊。希望这能让您走上正轨。看看mysql文档:这是一个合乎逻辑的问题,请参考我的ans,如果您有任何疑问,请及时通知我comment@Dennis首先:我没有投任何反对票,所以请不要指手画脚。我只是想帮忙。谢谢关于我的评论:我的印象是(我可能错了,当然),文档化的功能正是您想要的:它允许在表上运行INSERT
语句,如果匹配的条目已经存在,它将自动执行更新
。您所要做的就是定义正确的索引。文档中给出了一些示例,因此没有更多的说明。我建议你在评判之前试着理解一下这个特点。这是一个很好的逻辑问题。我发现有人投了否决票,所以我又站了起来。是的,这就是我在问题中说的。但我不能在重复键更新中使用,因为我没有唯一的字段?如果可能,您可以共享您的查询和表格吗?确定要更新或插入到表格中的数据类型意味着是字符还是数字?