Php 根据值更新数据库
我有一些代码,应该根据一些值更新数据库。这是一场比赛,在我的比赛中我有“进攻”和“防守”。我也有等级(在数据库中称为“playerrork”)。我希望等级根据一个玩家有多少“攻击”和“防御”而改变。听起来很简单,不是吗?不管怎么说,这对我来说都不是 这就是我的意思 攻击范围在1到1000之间,等级为1 在1001和2000之间攻击,等级为2 等 问题是,无论我有多少攻击/防御,排名都保持在1,并且我没有收到错误消息 这是相关代码Php 根据值更新数据库,php,mysqli,Php,Mysqli,我有一些代码,应该根据一些值更新数据库。这是一场比赛,在我的比赛中我有“进攻”和“防守”。我也有等级(在数据库中称为“playerrork”)。我希望等级根据一个玩家有多少“攻击”和“防御”而改变。听起来很简单,不是吗?不管怎么说,这对我来说都不是 这就是我的意思 攻击范围在1到1000之间,等级为1 在1001和2000之间攻击,等级为2 等 问题是,无论我有多少攻击/防御,排名都保持在1,并且我没有收到错误消息 这是相关代码 if ($attack AND $defense >1 &a
if ($attack AND $defense >1 && $attack AND $defense < 1000){
$update_rank = mysqli_query($con,"UPDATE stats SET stats.playerrank = 1 WHERE stats.id=$id4");
}elseif ($attack AND $defense >1001 && $attack AND $defense < 2000){
$update_rank2 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 2 WHERE stats.id=$id4");
}elseif ($attack AND $defense >2001 && $attack AND $defense < 3000){
$update_rank6 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 3 WHERE stats.id=$id4");
}elseif ($attack AND $defense >3001 && $attack AND $defense < 4000){
$update_rank5 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 4 WHERE stats.id=$id4");
}elseif ($attack AND $defense >4001 && $attack AND $defense < 5000){
$update_rank4 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 5 WHERE stats.id=$id4");
}elseif ($attack AND $defense >5001 && $attack AND $defense < 6000){
$update_rank3 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 6 WHERE stats.id=$id4");
}
if($attack AND$defense>1&&$attack AND$defense<1000){
$update_rank=mysqli_query($con,“updatestats SET stats.playerrank=1,其中stats.id=$id4”);
}elseif($attack AND$defense>1001&$attack AND$defense<2000){
$update_rank2=mysqli_query($con,“updatestats SET stats.playerrak=2,其中stats.id=$id4”);
}elseif($attack AND$defense>2001&$attack AND$defense<3000){
$update_rank6=mysqli_query($con,“updatestats SET stats.playerrak=3,其中stats.id=$id4”);
}elseif($attack AND$defence>3001&$attack AND$defence<4000){
$update_rank5=mysqli_query($con,“updatestats SET stats.playerrak=4,其中stats.id=$id4”);
}elseif($attack AND$defense>4001&$attack AND$defense<5000){
$update_rank4=mysqli_query($con,“updatestats SET stats.playerrak=5,其中stats.id=$id4”);
}elseif($attack AND$defense>5001&$attack AND$defense<6000){
$update_rank3=mysqli_query($con,“updatestats SET stats.playerrank=6,其中stats.id=$id4”);
}
这是完整的代码
<?php
include("connect.php");
include("header.php");
$username = $_SESSION['userlogin'];
$getattack = "SELECT stats.id, stats.attack, users.id, users.username FROM stats, users WHERE users.username = '$username' AND stats.id = users.id";
$getdefense = "SELECT stats.id, stats.defense, users.id, users.username FROM stats, users WHERE users.username = '$username' AND stats.id = users.id";
$gotattack = mysqli_query($con,$getattack);
$gotdefense = mysqli_query($con,$getdefense);
$attack = mysqli_fetch_assoc($gotattack);
$defense = mysqli_fetch_assoc($gotdefense);
$rankstatsget = "SELECT stats.id, stats.playerrank, users.id, users.username FROM stats, users WHERE users.username = '$username' AND stats.id = users.id";
$rankstatsgot = mysqli_query($con,$rankstatsget);
$id_get = mysqli_query($con,"SELECT stats.id,users.id, users.username FROM stats, users WHERE users.username = '$username' AND stats.id = users.id");
$gotid = mysqli_fetch_array($id_get);
$id4 = $gotid["id"];
while($row = mysqli_fetch_array($rankstatsgot, MYSQL_ASSOC))
{
echo "Current Rank: {$row['playerrank']} <br> ".
"--------------------------------<br>";
}
if ($attack AND $defense >1 && $attack AND $defense < 1000){
$update_rank = mysqli_query($con,"UPDATE stats SET stats.playerrank = 1 WHERE stats.id=$id4");
}elseif ($attack AND $defense >1001 && $attack AND $defense < 2000){
$update_rank2 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 2 WHERE stats.id=$id4");
}elseif ($attack AND $defense >2001 && $attack AND $defense < 3000){
$update_rank6 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 3 WHERE stats.id=$id4");
}elseif ($attack AND $defense >3001 && $attack AND $defense < 4000){
$update_rank5 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 4 WHERE stats.id=$id4");
}elseif ($attack AND $defense >4001 && $attack AND $defense < 5000){
$update_rank4 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 5 WHERE stats.id=$id4");
}elseif ($attack AND $defense >5001 && $attack AND $defense < 6000){
$update_rank3 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 6 WHERE stats.id=$id4");
}
Echo "Your rank is up to date!";
?>
您必须为每个变量指定大于等于小于等于的值
if ($attack >1 AND $defense >1 && $attack < 1000 AND $defense < 1000){
$update_rank = mysqli_query($con,"UPDATE stats SET stats.playerrank = 1 WHERE stats.id=$id4");
if($attack>1和$defense>1&&$attack<1000和$defense<1000){
$update_rank=mysqli_query($con,“updatestats SET stats.playerrank=1,其中stats.id=$id4”);
等等
或
if($attack>1或$defence>1)&($attack<1000或$defence<1000)){
$update_rank=mysqli_query($con,“updatestats SET stats.playerrank=1,其中stats.id=$id4”);
您将和
以及&
混合在一起,没有括号。这两个运算符有不同之处,因此您的if()测试的执行方式无疑与您认为的不同
e、 g
$attack AND$defense>1&$attack AND$defense<1000
将被解析为
$attack && (($defense > 1) && $attack) && ($defense < 1000)
$attack&($defense>1)&&$attack)&($defense<1000)
我自己发现了问题
我需要把
if ($attack['attack'] + $defense['defense'] >1 && $attack['attack'] + $defense['defense'] < 1000){
$update_rank = mysqli_query($con,"UPDATE stats SET stats.playerrank = 1 WHERE stats.id=$id4");
if($attack['attack']+$defense['defense']>1&&$attack['attack']+$defense['defense']<1000){
$update_rank=mysqli_query($con,“updatestats SET stats.playerrank=1,其中stats.id=$id4”);
而不是
if ($attack AND $defense >1 && $attack AND $defense < 1000){
$update_rank = mysqli_query($con,"UPDATE stats SET stats.playerrank = 1 WHERE stats.id=$id4");
if($attack AND$defense>1&&$attack AND$defense<1000){
$update_rank=mysqli_query($con,“updatestats SET stats.playerrank=1,其中stats.id=$id4”);
因为查询没有为IF语句返回正确类型的答案
没有错误://为什么中的和和&
的混合和匹配($attack和$defense>1&&$attack和$defense<1000){
和和&&
是布尔比较运算符,{code>你是说如果($attack+$defense>1&$attack+$defense<1000){
?@MarkBaker应该查看攻击和防御是否大于1但也小于1000,之后该行将等级更新为1。尝试更改为您的版本,但无效:(你的意思是看攻击是否大于1,防御是否大于1?…这个词在计算术语中有一个非常具体的含义,你使用它非常含糊。我知道,我不知道!我将进行更改,看看它是否有效(($attack>1和$defence>1)和($attack<1000和$defence<1000)){-正确吗?不起作用:(好的,你输入的值是什么?攻击是1040,防御是1001Ah,我试图回应攻击和防御,但我得到了一个字符串转换错误,可能是我会尽快排序。)
if ($attack['attack'] + $defense['defense'] >1 && $attack['attack'] + $defense['defense'] < 1000){
$update_rank = mysqli_query($con,"UPDATE stats SET stats.playerrank = 1 WHERE stats.id=$id4");
if ($attack AND $defense >1 && $attack AND $defense < 1000){
$update_rank = mysqli_query($con,"UPDATE stats SET stats.playerrank = 1 WHERE stats.id=$id4");