Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 存在时更新查询,不存在时插入_Php_Mysql_Sql_Mysqli - Fatal编程技术网

Php 存在时更新查询,不存在时插入

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

我需要一个带有WHERE语句的update查询,但是如果记录不存在,它应该插入数据

e、 g.
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
语句,如果匹配的条目已经存在,它将自动执行
更新
。您所要做的就是定义正确的索引。文档中给出了一些示例,因此没有更多的说明。我建议你在评判之前试着理解一下这个特点。这是一个很好的逻辑问题。我发现有人投了否决票,所以我又站了起来。是的,这就是我在问题中说的。但我不能在重复键更新中使用
,因为我没有唯一的字段?如果可能,您可以共享您的查询和表格吗?确定要更新或插入到表格中的数据类型意味着是字符还是数字?