好吧,我正在使用此脚本从主表中说MTB
得到一些值,并在另一个表中说STB
中总结了它们。没有唯一键或主键,因此在这里我不能使用ON DUPLICATE KEY的情况。
我想做的是,如果从MTB
获取的节点名称已经存在于STB
中,那么我只想更新它,并且如果来自MTB
的节点名称确实存在STB
中不存在,那么我想将数据插入表中。
我尝试使用If情况,首先使用从STB
获取的节点名在MTB
中选择行,如果{{1}中存在来自MTB
的节点名}(即选择查询IS NOT NULL),然后我们对其进行更新,否则我们将其插入。
但是,这无法正常工作。请暗示我做错了。
STB
答案 0 :(得分:1)
只需看下面的代码,它就可以工作。 对于MYSQL:
$qry = mysqli_query(<set your db connection variable>, "SELECT * FROM `NodesInfo` WHERE nodeName` = '".$row2['nodeName']."' ");
$res = mysqli_num_rows($qry);
if($res > 0)
{
$update_qry = mysqli_query(<set your db connection variable>, "UPDATE `NodesInfo` SET `Time Stamp`= '".$row2['timeStamp']."',`Status`= '$status' WHERE nodeName` = '".$row2['nodeName']."'");
}
else
{
$insert_qry = mysqli_query(<set your db connection variable>, "INSERT INTO `NodesInfo`(`Nodename`, `Category`, `Time Stamp`, `Type`, `Status`) VALUES ('".$row2['nodeName']."','NodeMCUMQTTData','".$row2['timeStamp']."','$type','$status')");
}
答案 1 :(得分:0)
如果您已经nodeName
已经退出,则似乎要对其进行更新,否则将插入新条目。
要实现此目的,您可以将nodeName
字段设为唯一。
ALTER TABLE `NodesInfo` ADD UNIQUE INDEX `idx_nodeName` (`nodeName`);
现在您可以尝试ON DUPLICATE KEY UPDATE
INSERT INTO `NodesInfo`(`Nodename`, `Category`, `Time Stamp`, `Type`, `Status`) VALUES ('".$row2['nodeName']."',
'NodeMCUMQTTData',
'".$row2['timeStamp']."',
'$type','$status'
)
ON DUPLICATE KEY UPDATE
`Time Stamp`= '".$row2['timeStamp']."',
`Status`= '$status';
答案 2 :(得分:0)
IF exists(SELECT * FROM `NodesInfo` WHERE nodeName` = '".$row2['nodeName']."')
THEN
UPDATE `NodesInfo` SET `Time Stamp`= '".$row2['timeStamp']."',`Status`= '$status' WHERE nodeName` = '".$row2['nodeName']."'
ELSE
INSERT INTO `NodesInfo`(`Nodename`, `Category`, `Time Stamp`, `Type`, `Status`) VALUES ('".$row2['nodeName']."','NodeMCUMQTTData','".$row2['timeStamp']."','$type','$status')
END IF