0 голосов
спросил от в категории PHP
Просто чтобы узнать, что такое hoing on, я бы сделал пару изменений:
// the loop will do something useful only on last row while ($dbRow=$dbQuery->fetch(PDO::FETCH_ASSOC)) {   $points = $dbRow['Points'];   $pointsDeduction =-20; // this is constant value and should be out of loop } if($daysLeft == $End) {   $stmt = $conn->prepare("UPDATE Profile SET Points = $points - $pointsDeduction WHERE UserID= $UserID WHERE UserID= $UserID");   $dbQuery->execute();   echo" - 20 points will be deducted</h4></center></h4>"; }

Это «$ points - $ pointsDeduction «перевести на« $ points -20 »и на« $ points + 20 ».
Вы уверены в этом?
Ваша команда SQL повторяет предложение where 2 раза. < br>
Я бы изменил команду sql на нечто вроде:
$stmt = $conn->prepare("UPDATE Profile SET Points = Points - 20 WHERE UserID= $UserID");

-----
Учитесь правильно отбирать свой код, он показывает свою структуру, и это помогает читать и понимать. Это также помогает выявлять ошибки структур.
while ($dbRow=$dbQuery->fetch(PDO::FETCH_ASSOC)) {   $points = $dbRow['Points'];   $pointsDeduction =-20; } if($daysLeft == $End) {   $stmt = $conn->prepare("UPDATE Profile SET Points = $points - $pointsDeduction WHERE UserID= $UserID WHERE UserID= $UserID");   $dbQuery->execute();   echo" - 20 points will be deducted</h4></center></h4>"; }

Редакторы профессионального программиста имеют эту функцию и другие, такие как сопоставление скобок и подсветка синтаксиса.
// the loop will do something useful only on last row while ($dbRow=$dbQuery->fetch(PDO::FETCH_ASSOC)) {   $points = $dbRow['Points'];   $pointsDeduction =-20; // this is constant value and should be out of loop } if($daysLeft == $End) {   $stmt = $conn->prepare("UPDATE Profile SET Points = $points - $pointsDeduction WHERE UserID= $UserID WHERE UserID= $UserID");   $dbQuery->execute();   echo" - 20 points will be deducted</h4></center></h4>"; }
# [
$stmt = $conn->prepare("UPDATE Profile SET Points = Points - 20 WHERE UserID= $UserID");
#]
while ($dbRow=$dbQuery->fetch(PDO::FETCH_ASSOC)) {   $points = $dbRow['Points'];   $pointsDeduction =-20; } if($daysLeft == $End) {   $stmt = $conn->prepare("UPDATE Profile SET Points = $points - $pointsDeduction WHERE UserID= $UserID WHERE UserID= $UserID");   $dbQuery->execute();   echo" - 20 points will be deducted</h4></center></h4>"; }
# [#^ #]

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
0 голосов
ответил от
Как уже упоминалось, у вас есть два предложения WHERE . Это не будет работать.
Вы также передаете расчетное значение, которое также может не работать должным образом.

Это должно работать:
if($daysLeft == $End) {     newPoints = $points - 20;     $stmt = $conn->prepare("UPDATE Profile SET Points=$newPoints WHERE UserID=$UserID");     $dbQuery->execute(); }
Когда $ UserID не является числовым значением, он должен быть указан (должен быть, когда он может содержать пробелы):
$stmt = $conn->prepare("UPDATE Profile SET Points=$newPoints WHERE UserID='$UserID'");
Но тогда вы следует использовать параметризованные запросы вместо этого, когда $ UserID принадлежит пользователю, чтобы избежать инъекций SQL.

Категории

Добро пожаловать на сайт DraftingCode Q&A (ИТ ответы), где вы можете задавать вопросы и получать ответы от других членов сообщества.

Связанных вопросов не найдено

...