При добавлении значения из поля ввода в базу данных к существующему числу добавляемое число удваивается

Когда введенное число для $ очков берется в поле ввода, оно прибавляет число к общему количеству уже в базе данных, но по какой-то причине добавленное число удваивается. Например, если ввод 3, к общей сумме будет добавлено 6. Может ли кто-нибудь помочь с ответом на это?

Идея состоит в том, что кто-то должен иметь возможность добавлять баллы к общей сумме, а затем на отдельной странице просматривать ее на индикаторе выполнения (который работает правильно), но общие суммы не складываются. Я новичок в php, поэтому заранее извиняюсь за любые ошибки в коде.

Спасибо

<?php 
session_start();
if (!isset($_SESSION["sess_user"])){
    header("location:login.php");
} else {
echo "Userid: ".$_SESSION["sess_id"];
?>
<!doctype html>
<html>
<head>
<h2><a id = "button" href = "index.php">Main Menu</a></h2>
<h2><a id = "button" href = "selftrack.php">Track your updated progress!</a></h2>
</head>
<body>

<?php
            // Connect to the database
            $username = ""; 
            $password = "";
            $host = "";
            $db = $username;
            $points = $_POST['self_p'];
            // Connect to the MySQL server and select the required database
            $connection = mysqli_connect($host, $username, $password, $db);

            if (mysqli_connect_error()) {
                echo "Failed to connect to MySQL: " . mysqli_connect_error();
            } 
            else { // Database connected correctly            

                echo "<h1>Add  daily points</h1>";
                if (isset($_POST["addSubmit"])) { 
                    if ((!empty($_POST["self_p"]))) {// Check all parts of the form have a value


                        $query = "UPDATE targets 
                        SET self_points = self_points + ".$points."
                        WHERE user_id='".$_SESSION['sess_id']."'";


                        $result = mysqli_query($connection, $query);

                        if ($result == false) { 
                            // Show error message
                            echo "<p>The target points for  " . $_POST["self_p"] . " was not added.</p>";                        
                        } 
                        else { 
                        echo "<p>The target points for \"" . $_POST["self_p"] . "\" has been added.</p>";
                        }
                    } 
                    else { 
                    echo "<p>Please fill out all the details</p>";
                    }
                }
            }

            ?>

            <form  role = "form" id = "addForm" name = "addForm" action = "?" method = "post">            

                <div class = "form-group">
                <div class = "col-xs-7">
                    <label for = "addFormLast_Name">Please enter your daily points, up to 5:</label>
                    <input class = "form-control" id = "addFormLast_Name" name = "self_p" type = "text">
                </div>
                <div class = "form-group">
                <div class = "col-xs-7">
                    <input class = "form-control" id = "addSubmit" name = "addSubmit" value = "Add Target" type = "submit">

                </div>
                </div>
                 <?php
             mysqli_close($connection);
        }
        ?>
                </body>
                <?php

?>

                </html>

Я не вижу в вашем коде никаких проблем, связанных с добавлением, но ваш запрос открыт для атак с использованием SQL-инъекций. Сделайте значение точки параметром вместо того, чтобы вставлять его непосредственно в запрос. Google "Параметризованный запрос PHP", чтобы узнать, как это сделать.

Racil Hilan 18.04.2018 16:58

По какой-то причине, используя переменную $ points, добавил double, изменил ее на использование $ _post, и теперь, похоже, он работает нормально ... странно! Спасибо за совет

Sam 19.04.2018 11:36

Здесь должно быть что-то еще. Измените его обратно на $points и посмотрите, сработает ли он на этот раз.

Racil Hilan 19.04.2018 11:45
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
39
0

Другие вопросы по теме