Почему переменная в моем php обнуляется? - PullRequest
0 голосов
/ 23 октября 2011

Это был опечатка, и я не хотел оставлять здесь свой код. Это не принесет пользы никому другому.

Это мой код, и я хочу, чтобы переменная $ 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 Ответ

4 голосов
/ 23 октября 2011

В коде вы путаете $row3 и $row4, но я предполагаю, что вы перебираете здесь одну строку.Кроме того, вы, кажется, представляете сильно абстрагированную версию здесь.Убедитесь, что ошибка появляется даже после упрощения, например, с тестовой базой данных.Но если предположить, что это не так, единственное объяснение:

Вы выполняете весь фрагмент кода несколько раз.Каждый раз, когда он выполняется, он читает ровно одну строку.Добавьте

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

до того момента, и вы увидите два прогона.

В качестве последнего примечания, вы действительно должны использовать PDO в коде после 2010 года.Он не зависит от базы данных и отлично поддерживает транзакции и подготовленные операторы.


В ответ на изменения:

Прежде всего, ваш код уязвим для SQL-инъекция .Исправьте это сейчас, например, используя подготовленные операторы PDO.

Во-вторых, почему вы присоединяетесь к php-коду?Вы должны рассчитать суммы и все данные, которые вам нужны в базе данных, с несколькими JOINs .Для этого вам не нужно более одного (возможно, двух) SQL-запроса.

В-третьих, проблема в том, что вы не добавляете к сумме $ total:

$total=$Total+$points;

, начиная с $Totalне определено, оно оценивается как 0, поэтому вы могли бы написать:

$total = $points;

Конечно, вы хотели:

$total += $points;

Но, как я уже упоминал выше, это все еще чрезвычайноплохой стиль кодирования для выполнения простых вычислений (таких как суммирование) в приложении вместо базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...