В коде вы путаете $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;
Но, как я уже упоминал выше, это все еще чрезвычайноплохой стиль кодирования для выполнения простых вычислений (таких как суммирование) в приложении вместо базы данных.