Как правильно сделать условие и запрос к БД?

231
06 марта 2017, 13:13

Подскажите, пожалуйста, как сделать, чтобы правильно заносились данные, а то 5 раз повторяется. Нужно, чтобы при пополнении от определенной суммы, давалось несколько танков в подарок, а получается, что 5 раз сумма пополняется и вместо 1р при пополнении, на баланс 5р приходит.

 $serebro = intval($ins_sum <= 0.01) ? ($serebro + ($serebro * 0.30) ) : $serebro;
 $asdd_tree = ( $ik_payment_amount >= 99.99) ? 1 : 0;
 $qadd_tree = ( $ik_payment_amount >= 499.99) ? 4 : 0;
 $wadd_tree = ( $ik_payment_amount >= 999.99) ? 1 : 0;
 $ssadd_tree = ( $ik_payment_amount >= 2499.99) ? 3 : 0;
 $vadd_tree = ( $ik_payment_amount >= 4999.99) ? 6 : 0; 
 $lsb = time();
 $to_referer = ($serebro * 0.10);
 $db->Query("UPDATE db_users_b SET money_b = money_b + '$serebro', b_t = b_t + '$asdd_tree', to_referer = to_referer + '$to_referer', last_sbor = '$lsb', insert_sum = insert_sum + '$ik_payment_amount' WHERE id = '{$user_id}'");
 $db->Query("UPDATE db_users_b SET money_b = money_b + '$serebro', b_t = b_t + '$qadd_tree', to_referer = to_referer + '$to_referer', last_sbor = '$lsb', insert_sum = insert_sum + '$ik_payment_amount' WHERE id = '{$user_id}'");
 $db->Query("UPDATE db_users_b SET money_b = money_b + '$serebro', c_t = c_t + '$wadd_tree', to_referer = to_referer + '$to_referer', last_sbor = '$lsb', insert_sum = insert_sum + '$ik_payment_amount' WHERE id = '{$user_id}'");
 $db->Query("UPDATE db_users_b SET money_b = money_b + '$serebro', c_t = c_t + '$ssadd_tree', to_referer = to_referer + '$to_referer', last_sbor = '$lsb', insert_sum = insert_sum + '$ik_payment_amount' WHERE id = '{$user_id}'");
 $db->Query("UPDATE db_users_b SET money_b = money_b + '$serebro', c_t = c_t + '$vadd_tree', to_referer = to_referer + '$to_referer', last_sbor = '$lsb', insert_sum = insert_sum + '$ik_payment_amount' WHERE id = '{$user_id}'");
Answer 1

Если ваш класс поддерживает плейсхолдеры, то будет выглядеть как-то так:

// Один запрос
$db->Query("UPDATE db_users_b SET 
  money_b = money_b + :money_b, 
  c_t = c_t + :c_t,
  b_t = b_t + :b_t, 
  to_referer = to_referer + :ref, 
  last_sbor = :lsb, 
  insert_sum = insert_sum + :ik 
  WHERE id = :id", [
  ':money_b' => $serebro,
  // Сразу считаем сколько чего и куда нужно добавить
  ':c_t' => $wadd_tree + $ssadd_tree + $vadd_tree,
  ':b_t' => $asdd_tree + $qadd_tree,
  ':ref' => $to_referer,
  ':lsb' => $lsb,
  ':id'  => $user_id
]);

Если не поддерживает, то делайте как у вас, только по c_t/b_t вставляйте готовые суммы.

READ ALSO
Как работает запись if($var){ &hellip; } или if(!$var){ &hellip; }?

Как работает запись if($var){ … } или if(!$var){ … }?

Друзья всем привет!!! помогите разобраться раз и навсегда с этой записью, до сих пор сильно путаюсь, благодарю вас заранее

284
$_POST зависит от чекбокса

$_POST зависит от чекбокса

Доброго времени суток, из select выбирается значение, switch определяет какое действие выполнятьВ форме вместе с select есть чекбокс

242
Не работает Cron, в Laravel 5.4 + Docker

Не работает Cron, в Laravel 5.4 + Docker

Обновили Laravel 53 до Laravel 5

372