Sign in to follow this  
Followers 0

MYSQL ЗАПРОС UPDATE

5 posts in this topic

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

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

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

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

 

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

Edited by Shakoladka

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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


 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.