MYSQL ЗАПРОС UPDATE

В теме 5 сообщений

Всем добра, подскажите что не так делаю? Хочу изменить запрос в php скрипте

С - $query = sprintf("INSERT INTO `prefix_users` (`account`, `sum`) VALUES ('%s', '%d')",

На - $query = sprintf("UPDATE `prefix_users` SET `money` = `money` + '%s' WHERE `login` = '%d'", 

Думаю что то не так делаю, не могу понять. Делаю пополнение счета с сайта

 

Заранее спасибо, с меня как обычно лайкосик!)

Отредактировано пользователем Shakoladka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Shakoladka $query = sprintf("UPDATE `prefix_users` SET `money` = `money` + %d WHERE `login` = '%s'", $amount, $login);?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@keyl HTTP ERROR 500

            // Запрос в базу данных
            $conn = mysqli_connect($mysql_host, $mysql_user, $mysql_password);
            $database = mysqli_select_db($conn, $mysql_database);
            
            if($conn)
            {    
                                
$query = sprintf("UPDATE `prefix_users` SET `money` = `money` + %d WHERE `login` = '%s'", $amount, $login);
                mysqli_real_escape_string($conn, $_POST['label']), mysqli_real_escape_string($conn, $_POST['withdraw_amount'] * 1)); // множитель доната меняйте здесь
                mysqli_query($conn, $query);
            }
            mysqli_close($conn);
            
            return true;
        }
    }
    else echo "Error: request is not correct.";
}
else return exit();

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Shakoladka можешь попробовать сделать select . типа `money` = (SELECT `money` FROM `prefix_users` where `login` = '%s') + *тут чето добавляешь* where `login` = '%s'"...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Shakoladka Скрипт выглядит очень не безопасно, я бы тебе советовал добавить проверку на существования пользователя. Помимо этого не совсем понял, зачем ты умножаешь значение денег на 1? Если тебе необходимо получить именно значение в int то:
 

$amount = (int) $_POST['withdraw_amount'];



PDO:

<?php
try {
    $pdo = new PDO("mysql:host=$mysql_host;dbname=$mysql_database", $mysql_user, $mysql_password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $login = $_POST['label'];
    $amount = $_POST['withdraw_amount'] * 1;
    $stmt = $pdo->prepare("SELECT COUNT(*) FROM `prefix_users` WHERE `login` = :login");
    $stmt->execute(['login' => $login]);
    $userExists = $stmt->fetchColumn();
    if ($userExists) {
        $stmt = $pdo->prepare("UPDATE `prefix_users` SET `money` = `money` + :amount WHERE `login` = :login");
        $stmt->execute(['amount' => $amount, 'login' => $login]);
    } else {
        throw new Exception("Пользователь не найден.");
    }

catch (PDOException $e) {
    echo "Ошибка: " . $e->getMessage();
catch (Exception $e) {
    echo "Ошибка: " . $e->getMessage();
}
$pdo = null;


Mysqli:

<?php
$conn = mysqli_connect($mysql_host, $mysql_user, $mysql_password, $mysql_database);
if (!$conn) {
    die("Ошибка подключения: " . mysqli_connect_error());
}
$login = mysqli_real_escape_string($conn, $_POST['label']);
$amount = $_POST['withdraw_amount'] * 1;
try {
    $stmt = $conn->prepare("SELECT COUNT(*) FROM `prefix_users` WHERE `login` = ?");
    $stmt->bind_param("s", $login);
    $stmt->execute();
    $stmt->bind_result($userExists);
    $stmt->fetch();
    $stmt->close();

    if ($userExists) {
        $stmt = $conn->prepare("UPDATE `prefix_users` SET `money` = `money` + ? WHERE `login` = ?");
        $stmt->bind_param("is", $amount, $login);
        $stmt->execute();
        $stmt->close();
    } else {
        throw new Exception("Пользователь не найден.");
    }

catch (Exception $e) {
    echo "Ошибка: " . $e->getMessage();
}
mysqli_close($conn);
?>


 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу