为什么我的php中的变量重置为零?

时间:2011-10-23 19:12:42

标签: 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

1 个答案:

答案 0 :(得分:4)

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

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

echo "Start of loop, x: $x";

之前,你会看到两次跑步。

最后一点,您应该只在2010年后的代码中使用PDO。它独立于数据库,并且对事务和准备好的语句提供了出色的支持。


回应编辑:

首先,您的代码容易受到SQL injection 的攻击。现在解决这个问题,例如使用PDO预处理语句。

其次,你为什么加入php代码?您应该使用多个JOINs计算数据库中所需的总和和所有数据。你不应该需要多于一个(也许是两个)SQL查询。

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

$total=$Total+$points;

由于$Total未定义,因此评估为0,因此您可以同样写:

$total = $points;

当然,你想要:

$total += $points;

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