所以我在这里看到了一些类似的问题,但我无法理解它们。
我的表:
'timestamp' int(30) NOT NULL,
'clientguid' varchar(32) NOT NULL,
'clientip' varchar(32) NOT NULL,
'serverip' varchar(32) NOT NULL)
我有4个变量
$TimeStamp
$ClientGUID
$ClientIP
$ServerIP
我的查询应该这样做:
如果clientguid
符合$ClientGUID
的行:
UPDATE 'mytablename'
SET 'timestamp' = '$TimeStamp','clientip' = '$ClientIP','serverip' = '2.2.2.24'
WHERE 'mytablename'.'clientguid' = '$ClientGUID');
如果没有匹配的行:
INSERT INTO 'mytablename' ('timestamp','clientguid','clientip','serverip')
VALUES($TimeStamp,'$ClientGUID', '$ClientIP', '$ServerIP');
我不必担心逃避和验证,这已经完成了 我只需要一个能够实现这一目标的声明。 :)
答案 0 :(得分:0)
如果您在表上设置了唯一键,那么您可以先插入,如果出现错误重复记录,则抓住它们并进行更新。这通常比一些行首先存在然后更新更快。
答案 1 :(得分:-1)
为列客户端ID创建UNIQUE索引 然后你可以使用INSERT .... ON DUPLICATE KEY UPDATE
INSERT INTO yourtable (timestanp, clientguid,clientip, serverip)
VALUES(NOW(), $clientguid, '$clientip', '$serverip')
ON DUPLICATE KEY UPDATE
timestamp = NOW(),
clientip = VALUES(clientip),
serverip = VALUES(serverip)