0
$token = $_COOKIE['login']; //токен аккаунта отправителя
$uname = $_GET['username']; //никнейм получателя
$transfer = $_GET['transfer']; //сколько отправить
$link = mysqli_connect($host,$username,$password,$database); //подключается, всё нормально
$query = "SET @a = (SELECT `coins` FROM `users` WHERE `token`='".$token."');@b = (SELECT `coins` FROM `users` WHERE `username`='".$uname."'); UPDATE `users` SET `coins`=@b+".$transfer." WHERE `username`='".$uname."';UPDATE `users` SET `coins`=@a-".$transfer." WHERE `token`='".$token."'"; //запрос производится, пишет что запрос проведён успешно, но результата нету
        $try = mysqli_multi_query($link, $query) or die("Ошибка " . mysqli_error($link)); //ошибок не даёт

Задача:

Считать кол-во монеток отправителя (переменная @a), кол-во монеток получателя (переменная @b), изменить значение @a на @a - $transfer, а значение @b+ на @b + $transfer.


Где моя ошибка, подскажите пожалуйста...

  • Блин, сам решил.... Запрос должен выглядеть так :
    $query = "UPDATE \users` SET `coins`=(SELECT `coins` WHERE `username`='".$uname."')+".$transfer." WHERE `username`='".$uname."';UPDATE `users` SET `coins`=(SELECT `coins` WHERE `token`='".$token."')-".$transfer." WHERE `token`='".$token."'";`
    – dimankiev May 10 '18 at 19:32
  • Ужасное решение. 1) вы плохо знакомы с синтаксисом SQL. перестаньте думать в терминах программирования "вот сюда я запишу значение, сюда его подставлю". 2) может получиться так, что первый запрос выполнится, сервер mysql умрет, тогда у кого-то появятся деньги, а у кого-то они НЕ спишутся. Решение - использовать транзакции. – Total Pusher May 11 '18 at 04:46
  • @TotalPusher, Согласен, транзакции лучше, я попробую добавить их позднее. – dimankiev May 12 '18 at 15:55

0 Answers0