3 回答
TA贡献1936条经验 获得超6个赞
你的代码没有意义。它将始终为 5(当点数 == 70001 时)或 6(所有其他点数)。
我希望应该有条件“低于”,所以
if($data[chat_points] < '2001'){
$mysqli->query("UPDATE boom_users SET user_level = 1 WHERE user_id = '{$data['user_id']}'");
}
elseif($data[chat_points] < '5001'){
$mysqli->query("UPDATE boom_users SET user_level = 2 WHERE user_id = '{$data['user_id']}'");
}
elseif($data[chat_points] < '15001'){
$mysqli->query("UPDATE boom_users SET user_level = 3 WHERE user_id = '{$data['user_id']}'");
}
elseif($data[chat_points] < '35001'){
$mysqli->query("UPDATE boom_users SET user_level = 4 WHERE user_id = '{$data['user_id']}'");
}
elseif($data[chat_points] < '45001'){
$mysqli->query("UPDATE boom_users SET user_level = 5 WHERE user_id = '{$data['user_id']}'");
}
elseif($data[chat_points] < '70001'){
$mysqli->query("UPDATE boom_users SET user_level = 6 WHERE user_id = '{$data['user_id']}'");
}
或者更好,更短,更快......
$levels = [
2001,
5001,
15001,
35001,
45001,
70001
];
$level = 1;
foreach ($levels as $v) {
if ($data['chat_points'] >= $v) $level++;
}
mysqli->query ("UPDATE boom_users SET user_level = " . (int)$level . " WHERE user_id = '{$data['user_id']}'");
if ($level <= count($levels)) {
echo 'Needed to next level: ' . ($levels[$level - 1] - $data['chat_points']) . ' points';
} else {
echo 'Max level';
}
TA贡献1864条经验 获得超6个赞
我们必须获得当前的用户级别。只需一个电话
$sql = "SELECT user_level FROM boom_users WHERE user_id = '{$data['user_id']}'");
//get the current user level
$level = $mysqli->query($sql)->fetch_object()->user_level;
//compare if user approached the 2001 limit but not exceed 5000 limit
if($data[chat_points] >= '2001' && $data[chat_points] < '5000' && $level != 1){
$mysqli->query("UPDATE boom_users SET user_level = 1 WHERE user_id = '{$data['user_id']}'");
}
在这种情况下,只有在用户具有较低的 user_level 的情况下,我们才会进入 if 语句,如果他具有以上我们跳过。1 次调用 DB 之前,如果语句为真,再调用一次更新。
TA贡献1765条经验 获得超5个赞
如果我没有误解你的问题,那么这种方式怎么样?
<?php
$levels = [2001=>1, 5001=>2, 15001=>3, 35001=>4, 45001=>5, 70001=>6];
if(!empty($data['chat_points']) && array_key_exists($data['chat_points'],$levels)){
$mysqli->query("UPDATE boom_users SET user_level = {$levels[$data['chat_points']]} WHERE user_id = '{$data['user_id']}'");
}
?>
- 3 回答
- 0 关注
- 167 浏览
添加回答
举报