Я работаю (учусь) на платформе CodeIgniter.Код не сильно отличается от обычного PHP, за исключением синтаксиса mysql
Проблема
У пользователя есть баланс в 100 долларов.Затем он записывается на турнир.Стартовый взнос с турнира составляет 50 долларов.Таким образом:
- Получить баланс из БД
- Вычесть 5 $ 0 из значения, полученного из БД
- Обновить базу данных новым значением.
Выше должно быть довольно просто, но я получаю странные результаты.
Games_model
public function get_balance($userID)
{
$sql = "SELECT balance FROM users WHERE userID = '$userID'";
$stmnt = $this->db->query($sql);
if($stmnt->num_rows() > 0){
$balance = $stmnt->result();
return $balance;
}
return false;
}
public function update_balance($userID){
//get balance
$balance = $this->get_balance($userID);
//charge for pool entry
$newBalance = (int)$balance - (int)50;
var_dump($newBalance);
echo '<h1>'.$newBalance.'</h1>';
$this->db->set('balance', (int)$newBalance);
$this->db->where("userID", $userID); //table column field, second argument
$this->db->update('users');
}
Игровой контроллер
//Charge for picks #TODO add a check if user has enough funds to enter!!!!!
echo $this->games_model->update_balance($this->session->userID);
//Transferring data to Model uploaded
echo $this->games_model->record_picks($data['picks']);
$this->load->view('templates/header', $data);
$this->load->view('games/record_picks', $data);
//$this->load->view('templates/upcoming_fixtures_tbl', $data['games']);
$this->load->view('templates/footer', $data);
}
Что я сделал
Тип balance
вБД был типа int()
, однако получение этого значения и вычитание 50 дали неверные результаты.Затем я изменил поле balance
на тип varchar()
и попытался вычесть 50. Все еще неверный результат.
Наконец я попытался привести тип, как вы можете видеть в приведенном выше коде, однако он все равно дает неправильный результат.
Результат Я получаю
В этом примере я получаю balance
пользователя, который равен 150. Затем я пытаюсь получить от него минус 50.И в результате я получаю ... -49
, что действительно странно.
Любая помощь высоко ценится.
ОБНОВЛЕНИЕ :
Я отладил метод get_balance()
и может подтвердить получение правильного баланса. Проблема возникает в update_balance()
method.
Обновление 2:
Когда я пытаюсь echo
$ balance = $ this-> get_balance ($ userID);внутри метода update_balance()
я получаю преобразование массива в строку.Поэтому я подозреваю, что именно в этом проблема.
Серьезность: Уведомление Сообщение: преобразование массива в строку Имя файла: models / Games_model.php Номер строки: 130
Обновление 3
var_dump()
метода get_balance()
array (size = 1) 0 => object (stdClass) [41] public 'balance' => строка '-49' (длина = 3)