Рейтинг:
8
Patrice T
Цитата:
это не работает
Определить "не работает"
Цитата:
это не работает, однако то, что я хочу достичь, - это если "заявление", то эхо "что-то", а также обновление базы данных MYSQL?
Это именно то, что делает ваш код. если условие выполнено, оно обновляется и Эхо.
-----
Научитесь правильно делать отступы в вашем коде, это покажет его структуру, и это поможет чтению и пониманию. Это также помогает выявлять структурные ошибки.
if($daysLeft == $End) {
$stmt = $conn->prepare("UPDATE `Profile` SET `Points` = $pointsDeduct WHERE UserID= $UserID");
$dbQuery->execute();
echo"A total of - 20 points will be deducted</center></h4>";
}
Профессиональные редакторы программистов имеют эту функцию и другие, такие как сопоставление скобок и подсветка синтаксиса.
Блокнот++ Главная Страница[
^]
личные[
^]
-----
$stmt = $conn->prepare("UPDATE `Profile` SET `Points` = $pointsDeduct WHERE UserID= $UserID");
Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[
^]
SQL-инъекция[
^]
Атаки SQL-инъекций на примере[
^]
PHP: SQL-инъекция - руководство пользователя[
^]
Шпаргалка по предотвращению инъекций SQL - OWASP[
^]
Member 13637584
Это не вычитание 20 баллов из пользователя в базе данных MYSQL. Я возьму на борт и другие ваши соображения, спасибо.
0x01AA
Обновление `профиль` набор `очки` = `точки` - $pointsDeduct где userId= $userId, которое
Patrice T
У тебя есть эхо ?
Member 13637584
Спасибо за это но все равно ничего не делает :(
0x01AA
И вы уверены, что запись с UserID = $UserID существует?
0x01AA
Есть сообщение об ошибке? Я не знаком с php/MySQL, для меня SQL должен быть без `:
Есть сообщение об ошибке? Я не знаком с php/MySQL, для меня SQL должен быть без `:
Я бы попробовал это сделать:
$параметр stmt = $dbh не-&ГТ;подготовить("обновить профиль набора очков = Очки - :pointsDeduct где userId= :ID пользователя");
$stmt->bindParam(':pointsDeduct', $pointsDeduct);
$stmt->bindParam(':UserID', $UserID);
$stmt->выполнить();
И не забывайте об обработке ошибок для более или менее каждой строки :)
Member 13637584
да, сейчас он работает, однако его добавление в базу данных MYSQL не вычитается? а моя ошибается?
0x01AA
Если вы добавляете, то ваш pointDeduct кажется уже отрицательным, и вы должны добавлять, а не вычитать его.
Member 13637584
но мне это нужно для вычитания? это тот самый :
$pointreduction=-20 часть неверна?
Member 13637584
если я поставлю -20 вместо $pointdeduction, это сработает, однако является ли это хорошей практикой?
0x01AA
Смотри:
100 + (-20) = 80
100 - (-20) = 120
хорошая практика: я бы сказал, что это скорее вопрос правильного наименования параметра (пожалуйста, позаботьтесь об этом сейчас, я не носитель английского языка)
1.) Вы называете параметр "дедукция" для меня, то дедукция должна быть положительной и SQL: .... Баллы= Баллы - $вычет
2.) я бы назвал параметр pointDelta и в зависимости от того, что вы хотите сделать (сложение/вычитание), дал бы параметру соответствующий знак. Тогда SQL будет выглядеть следующим образом: .... Очки= Очки + $pointDelta
Просто вижу, что вы из Великобритании, так что я уверен, что вы найдете правильное/хорошее имя для случая 2.) :-)
Member 13637584
да, теперь в этом есть смысл. Большое спасибо за вашу помощь.
0x01AA
Добро пожаловать. И в случае если вы довольны ответом я предлагаю принять его и возможно дать ему также 5 за хорошие советы касающиеся SQL инъекции ;)
Patrice T
Спасибо.
Я был немного занят, пока вы занимались деталями.
0x01AA
Все в порядке, я просто был/нахожусь занят просмотром хоккейного матча :)