@xKuzya
Рукожоп пытающийся кодить xD

Кто поможет переписать SQL запрос?

Хочу сделать запрос на пополнение баланса
Но столкнулся с проблемой что логин аккаунта и баланс хранятся в разных таблицах.
Эти таблицы объединяет только одно ИД аккаунта, но не правильно будет просить пользователей указывать их ид аккаунта на мой взгляд. а как спарсить ид из друпала вообще без понятия =( хотя это был бы самый лучший способ если человек указывал только сумму пополнения.
И так имеем таблицу users в которой есть ид допустим 1 и столбец name где храниться логин
Вторая таблица im_balances в которой есть тот же ид и столбец balance в котором и хранится сумма.
Если бы они были в одном то я бы заюзал:
$sql = mysql_query("UPDATE `lm_balances` SET balance = balance  +" . floor($_credits) . " WHERE `name`='" . $userId . "'");

Но к сожалению таблицы 2 и как сделать не знаю, да и по моему без добавочного кода на php тут тоже не обойтись но d php я тоже не силен

Спасибо!
  • Вопрос задан
  • 279 просмотров
Пригласить эксперта
Ответы на вопрос 4
shaks
@shaks
Я не совсем понял что у вас где храниться, и зачем вам логин аккаунта, но подразумеваю что вы имели ввиду что баланс юзера хранится не в таблице users а в таблице lm_balance

Эти таблицы объединяет только одно ИД аккаунта

Во первых имя колонки с id аккаунта (ид юзера в вашем случае) должен называться user_id а не name (судя по вашему sql запросу).
Во вторых, balance = balance +" . floor($_credits) . " - за это руки вырывать надо, с корнями.
Баланс ведите в наименьшей величине, если баланс рублевый - в копейках, долларовый - в центах, биткоиновый - в сатоши, и тд, и ничего не округлять никогда, если хотите чтобы сводился дебит с кредитом. При работе с большими числами лучше использовать либу по работе с большими числами
В третьих, ид юзера нужно просить не юзера ввести, а брать из сессии (если у вас сессионная авторизация).
В четвертых, функции mysql_* уже давно устарели и помечены как деприкейтед. В пхп7, если я не ошибаюсь - драйвер mysql убрали.
Ответ написан
Комментировать
@AdrianBlair
$userId= \Drupal::currentUser()->id()
Ответ написан
Комментировать
rim89
@rim89
программист-велосипедист
Если ID уникальный, то можно попробовать как то так
UPDATE <table.nameBalance> SET item = {new_param} WHERE id = (SELECT id FROM <table.nameUser> WHERE login = {current_login})

Но правильней - имхо передавать ID , сократив тем самым вложенность запросов.
Ответ написан
Комментировать
UPDATE c JOIN в Мускуле поддерживается?
В mssql я бы написал так:
update b set b.balance=
from balance b join user u on b.user_id=u.user_id
where u.name=
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы