这是我想要做的(伪代码)
if (dB entry exists) {
UPDATE the dB entry
}else{
UPDATE a default dB entry
}
这不是“INSERT INTO ... ON DUPLICATE
”问题
我希望有一种UPDATE ... ON DUPLICATE
类型的光滑代码可以在一行中完成。
我的代码根据$userName
请求创建$_GET['U']
。如果数据库中存在$userName
(它是唯一键),则递增数据库中的计数器。否则,增加默认条目的计数器。
以下是我目前更新计数器的代码:
$userName = $_GET['U'];
$sql = "UPDATE `stats` SET `count`= `count` + 1 WHERE `userName` = '" . $userName . "'";
mysqli_query($conn,$sql);
如果此特定用户名不存在,我希望这种情况发生:
$sql = "UPDATE `stats` SET `count`= `count` + 1 WHERE `userName` = 'default'";
mysqli_query($conn,$sql);
答案 0 :(得分:0)
你在找这个,
$userName = $_GET['U'];
$query_uname_exists = "SELECT count(*) FROM stats WHERE `userName` = '" . $userName . "'";
$uname_count = mysqli_query($conn,$query_uname_exists);
if($uname_count > 0){
#update
$sql = "UPDATE `stats` SET `count`= `count` + 1 WHERE `userName` = '" . $userName . "'";
mysqli_query($conn,$sql);
}
else{
#update default
$sql = "UPDATE `stats` SET `count`= `count` + 1 WHERE `userName` = 'default'";
mysqli_query($conn,$sql);
}
答案 1 :(得分:0)
这是我能为你缩减的最多:
$userName = mysqli_query($conn, "SELECT count(*) FROM stats WHERE `userName` = '".$_GET['U']."' LIMIT 1") == 0 ? 'default' : $_GET['U'];
mysqli_query($conn, "UPDATE `stats` SET `count`= `count` + 1 WHERE `userName` = '".$userName."' LIMIT 1");
答案 2 :(得分:0)
使用以下查询
$sql = "Update stats SET count = count + 1 where username = (case when username= ". $userName ". then username else 'default' end)";