Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.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_Variables - Fatal编程技术网

为什么php中的变量会将自身重置为零?

为什么php中的变量会将自身重置为零?,php,variables,Php,Variables,这是一个打字错误的问题,我真的不想把我的代码留在这里。这对其他任何人都没有好处 这是我的代码,我希望变量$x本身加上$points的值。出于某种原因,这是我得到的输出: TOTAL Before Add: 0 points: 8 TOTAL after add: 8 TOTAL Before Add: 0 points: 32 加总后合计:32 我想让它变成x:40(加上8+32) 为什么x每次都从0开始 感谢你的帮助, R在代码中,您混淆了$row3和$row4,但我假设您在这里迭代一行。

这是一个打字错误的问题,我真的不想把我的代码留在这里。这对其他任何人都没有好处

这是我的代码,我希望变量$x本身加上$points的值。出于某种原因,这是我得到的输出:

TOTAL Before Add: 0
points: 8
TOTAL after add: 8

TOTAL Before Add: 0
points: 32
加总后合计:32

我想让它变成x:40(加上8+32)

为什么x每次都从0开始

感谢你的帮助,
R

在代码中,您混淆了
$row3
$row4
,但我假设您在这里迭代一行。此外,您似乎在这里展示了一个高度抽象的版本。验证即使在简化之后,也会出现错误,例如使用测试数据库。但假设情况并非如此,唯一的解释是:

您多次执行整个代码段。每次执行时,它只读取一行。加

echo "Start of loop, x: $x";
在此之前,您将看到两次跑步

最后,您应该只在2010年后的代码中使用。它是独立于数据库的,对事务和准备好的语句有很好的支持


作为对编辑的回应:

首先,您的代码容易受到攻击。现在就解决这个问题,例如使用PDO准备的语句

其次,为什么要加入php代码?您应该计算总和以及数据库中所需的所有数据,并使用多个。您不应该需要超过一个(可能两个)SQL查询

第三,问题是你没有增加$total:

$total=$Total+$points;
由于未定义
$Total
,因此它的计算结果为
0
,因此您可以同样地编写:

$total = $points;
当然,你想要:

$total += $points;

但正如我上面提到的,在应用程序中而不是在数据库中执行琐碎的计算(如求和)仍然是一种非常糟糕的编码方式。

在代码中,您混淆了
$row3
$row4
,但我假设您在这里迭代一行。此外,您似乎在这里展示了一个高度抽象的版本。验证即使在简化之后,也会出现错误,例如使用测试数据库。但假设情况并非如此,唯一的解释是:

您多次执行整个代码段。每次执行时,它只读取一行。加

echo "Start of loop, x: $x";
在此之前,您将看到两次跑步

最后,您应该只在2010年后的代码中使用。它是独立于数据库的,对事务和准备好的语句有很好的支持


作为对编辑的回应:

首先,您的代码容易受到攻击。现在就解决这个问题,例如使用PDO准备的语句

其次,为什么要加入php代码?您应该计算总和以及数据库中所需的所有数据,并使用多个。您不应该需要超过一个(可能两个)SQL查询

第三,问题是你没有增加$total:

$total=$Total+$points;
由于未定义
$Total
,因此它的计算结果为
0
,因此您可以同样地编写:

$total = $points;
当然,你想要:

$total += $points;

但正如我上面提到的,在应用程序中而不是在数据库中执行琐碎的计算(例如求和)仍然是一种非常糟糕的编码方式。

我非常确定这是不可能的(
$x
没有在循环中赋值,也没有传递给任何可以通过引用修改它的东西)。您的实际代码可能不同。您是否在while条件下分配了
$row3
,然后访问
$row4
?我输入了实际代码,以便您了解发生了什么。行号不是打字错误。我只是在彼此内部运行循环,并使用上一行的数据。我很确定这是不可能的(
$x
没有在循环中赋值,也没有传递给任何可以通过引用修改它的对象)。您的实际代码可能不同。您是否在while条件下分配了
$row3
,然后访问
$row4
?我输入了实际代码,以便您了解发生了什么。行号不是打字错误。我只是在彼此内部运行循环,并使用上一行的数据。我将对此进行研究。我知道代码运行了多次,每次循环运行时,我都希望继续添加到x(现在称为Total)。我最初在循环运行之前分配x=0,因此我认为如果在循环中添加x=0,则上次分配的值将保持不变,并将继续增加。相反,每次循环运行时,它似乎都会重置为零。@Rossi好吧,我强烈认为不是php解释器搞乱了,而是你的程序搞乱了。有三种逻辑解释:1。继续添加0或不添加任何内容。事实并非如此。2.代码中存在逻辑错误。事实就是这样。3.循环被多次调用。我知道这是代码中的一个问题。我想知道是否有人能帮我看一下。是的,循环确实会被调用多次。这正是我想要的。@Rossi请查看此答案正文中的更新,特别是关于使用一个(或两个)SQL语句而不是四个,以及
$total
的大写。是的,这是一个打字错误的大写问题。非常感谢。我知道,这很容易受到攻击,而且风格明显不好,但我一直在自学这些东西,并使用谷歌基本上提供的任何东西。所以,现在我知道要调查PDO了。谢谢我会调查的。我知道代码运行了多次,每次循环运行时,我都希望继续添加到x(现在称为Total)。我最初在循环运行之前分配x=0,因此我认为如果在循环中添加x=0,则上次分配的值将保持不变,并将继续增加。相反,每次循环运行时,它似乎都会重置为零。@Rossi好吧,我强烈认为不是php解释器搞乱了,而是你的程序搞乱了。还有三个我