Php MYSQL更新(如果存在)或插入
我一直在尝试让下面的SQL正常工作,但是它似乎跳过了insert函数。基本上,更新应该优先考虑,因为大部分时间都应该启动Php MYSQL更新(如果存在)或插入,php,mysql,Php,Mysql,我一直在尝试让下面的SQL正常工作,但是它似乎跳过了insert函数。基本上,更新应该优先考虑,因为大部分时间都应该启动 UPDATE `teams-tasks` SET status=(:s), name=(:n), description=(:d), importance=(:i), applies=(:a) WHERE teamId =(:t) AND date=(:da) AND playerId =(:p) AND creatorId =(:c);
UPDATE `teams-tasks`
SET status=(:s), name=(:n), description=(:d), importance=(:i), applies=(:a)
WHERE teamId =(:t) AND date=(:da) AND playerId =(:p) AND creatorId =(:c);
IF (SELECT ROW_COUNT() = 0);
INSERT INTO `teams-tasks`
( status, date, creatorId, teamId, playerId, name, description, importance, applies )
VALUES
( (:s), (:da), (:c), (:t), (:p), (:n), (:d), (:i), (:a) ))
我做错了什么?
如果有必要的话,我将使用php pdo进行数据库连接
感谢用户替换到查询中,确保如果行存在,它将更新数据,如果行不存在,它将插入日期 要检查重复条目,它会在内部比较主键 e、 g e、 g 谢谢
Amit用户替换到查询中,该查询确保如果行存在,它将更新数据,如果行不存在,它将插入日期 要检查重复条目,它会在内部比较主键 e、 g e、 g 谢谢
Amit您应该使用插入。。。关于重复密钥更新 比如说
INSERT INTO AggregatedData (datenum,Timestamp)
VALUES ("734152.979166667","2010-01-14 23:30:00.000")
ON DUPLICATE KEY UPDATE
Timestamp=VALUES(Timestamp)
你应该使用插入。。。关于重复密钥更新 比如说
INSERT INTO AggregatedData (datenum,Timestamp)
VALUES ("734152.979166667","2010-01-14 23:30:00.000")
ON DUPLICATE KEY UPDATE
Timestamp=VALUES(Timestamp)
我也尝试过如果@ROWCOUNT==0而没有任何luckkive也尝试过如果@ROWCOUNT==0而没有任何luckHow它是否确定存在重复键,因为我插入或更新的每个条目都有一个唯一的id。但是,多行的条目可能完全相同。这就是我在where is中使用的teamId、date和playerId,以确保它是该队球员在该日期的unque行。我将如何实现我的期望结果?在复制密钥更新状态=(:s),名称=(:n),描述=(:d),重要性=(:i),应用=(:a)上插入
团队任务(状态,日期,创建者ID,团队ID,玩家ID,名称,描述,重要性,应用)值(:s),(:da),(:c),(:t),(:p),(:n),(:d),(:a))其中teamId=(:t)和date=(:da)以及playerId=(:p)和creatorId=(:c),我理解其中的WHERE不能像上面的语句中那样实现在我上面的示例中,我的新表达式会变成:INSERT INTOteams tasks
(状态、日期、创建者ID、团队ID、玩家ID、名称、描述、重要性,适用)重复密钥更新时的值(:s),(:da),(:c),(:t),(:p),(:n),(:d),(:i),(:a)),如果(团队ID=(:t)和日期=(:da)和玩家ID=(:p)和创建者ID=(:c)),则状态=(:s),名称=(:n),描述=(:d),重要性=(:i),适用(:a)当我插入或更新的每个条目都有一个唯一的id时,它如何确定是否存在重复的密钥。但是,对于多行,该条目可能完全相同。这就是我在where is中使用的teamId、date和playerId,以确保它是该队球员在该日期的unque行。我将如何实现我的期望结果?在复制密钥更新状态=(:s),名称=(:n),描述=(:d),重要性=(:i),应用=(:a)上插入团队任务(状态,日期,创建者ID,团队ID,玩家ID,名称,描述,重要性,应用)值(:s),(:da),(:c),(:t),(:p),(:n),(:d),(:a))其中teamId=(:t)和date=(:da)以及playerId=(:p)和creatorId=(:c),我理解其中的WHERE不能像上面的语句中那样实现在我上面的示例中,我的新表达式会变成:INSERT INTOteams tasks
(状态、日期、创建者ID、团队ID、玩家ID、名称、描述、重要性,适用)重复密钥更新时的值(:s),(:da),(:c),(:t),(:p),(:n),(:d),(:i),(:a)),如果(团队ID=(:t)和日期=(:da)和玩家ID=(:p)和创建者ID=(:c)),则状态=(:s),名称=(:n),描述=(:d),重要性=(:i),适用(:a)
INSERT INTO AggregatedData (datenum,Timestamp)
VALUES ("734152.979166667","2010-01-14 23:30:00.000")
ON DUPLICATE KEY UPDATE
Timestamp=VALUES(Timestamp)