gpt4 book ai didi

php - SQL : INSERT if no exist and UPDATE if exist

转载 作者:行者123 更新时间:2023-11-29 11:27:40 29 4
gpt4 key购买 nike

我有一个可以对数据库执行插入和更新的程序,我从 API 获取数据。这是我得到的示例数据:

$uname    = $get['userName'];
$oname = $get['offerName'];
$visitdata= $get['visits'];
$convdata = $get['conversion'];

我将这些数据保存到数据库sql中。 (成功)这是一个示例:

$sql = "INSERT INTO data_tester(username_data, name_offer_data, visit_data, conversion_data) VALUES('$uname','$oname', '$visitdata', '$convdata')";

Sample data in database table

id | username_data | name_offer_data | visit_data | conversion_data
1 | MOJOJO | XXX AU | 177 | 13
2 | MOJOJO | XX US | 23 | 4

现在,我想保存数据$uname, $oname, $visitdata, $convdata(如果不存在)并更新$visitdata, $convdata,其中$ uname, $oname 如果存在

如何通过简单的查询运行代码。请给我一个例子。谢谢。

最佳答案

您正在寻找的功能名为 UPSERT它是SQL-2008标准的一部分。然而,并非所有 DBMS 都实现它,有些 DBMS 的实现方式有所不同。

例如在 MySQL 上您可以使用:

INSERT ... ON DUPLICATE KEY UPDATE

语法 ( link to docs )或

REPLACE INTO

语法 (link to docs)。

这些方法要求您在您的情况下拥有正确的主键:(username_data name_offer_data)。

如果您使用 ActiveRecord(或类似)类,一些 PHP 框架也支持此功能。在 Laravel 中它被称为 updateOrCreate在 Yii 中它被称为 save() 。因此,如果您正在使用框架,请尝试检查其文档。

如果您既不使用框架也不使用现代 DBMS,则必须自己实现该方法。运行SELECT count(*) from data_tester WHERE username_data = ? AND name_offer_data = ? ,检查它是否返回任何行并调用适当的 UPDATE/INSERT sql

关于php - SQL : INSERT if no exist and UPDATE if exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37920669/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com