Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据值更新数据库_Php_Mysqli - Fatal编程技术网

Php 根据值更新数据库

Php 根据值更新数据库,php,mysqli,Php,Mysqli,我有一些代码,应该根据一些值更新数据库。这是一场比赛,在我的比赛中我有“进攻”和“防守”。我也有等级(在数据库中称为“playerrork”)。我希望等级根据一个玩家有多少“攻击”和“防御”而改变。听起来很简单,不是吗?不管怎么说,这对我来说都不是 这就是我的意思 攻击范围在1到1000之间,等级为1 在1001和2000之间攻击,等级为2 等 问题是,无论我有多少攻击/防御,排名都保持在1,并且我没有收到错误消息 这是相关代码 if ($attack AND $defense >1 &a

我有一些代码,应该根据一些值更新数据库。这是一场比赛,在我的比赛中我有“进攻”和“防守”。我也有等级(在数据库中称为“playerrork”)。我希望等级根据一个玩家有多少“攻击”和“防御”而改变。听起来很简单,不是吗?不管怎么说,这对我来说都不是

这就是我的意思

攻击范围在1到1000之间,等级为1 在1001和2000之间攻击,等级为2 等

问题是,无论我有多少攻击/防御,排名都保持在1,并且我没有收到错误消息

这是相关代码

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");