MYSQL ЗАПРОС UPDATE

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

Shakoladka
Великий Гуру

Всем добра, подскажите что не так делаю? Хочу изменить запрос в 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
Великий Гуру

@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();

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


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

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

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


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

@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 пользователей онлайн

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