Как я могу преобразовать эту инструкцию PDO в активный запрос записи в CodeIgniter?

#php #codeigniter #activerecord

#php #codeigniter #activerecord

Вопрос:

у меня есть этот оператор PDO, который работает нормально, но как я могу преобразовать его в активную запись в CodeIgniter?

Мой оператор PDO:

 UPDATE mytable set total=bought re_order-balance where retail_id=? and stock=? and stock_date=?
  

Я пробовал это, но не сработало:

 $data=array(                                                                                            
                    //some other fields
                    'total'=>'bought'   're_order' - 'balance'                      
                    );

                $this->db->where('retail_id', $someid);
                $this->db->where('stock', $somestock);
                $this->db->where('stock_date', $somestock);
                $this->db->update('mytable',$data); 
  

Когда я попробовал это, это не выдало никаких ошибок в то же время, это не обновило мое поле total в базе данных. Пожалуйста, любая помощь. Спасибо.

Комментарии:

1. Являются ли покупка, повторный заказ и баланс строками или числами?

2. Все они являются целыми числами. Они также все поля в одной таблице.

3. Итак, `$data = array( ‘total’ => ($buyed $ re-order — $ balance ) ) так что подходите лучше. На данный момент вы пытаетесь выполнить математические вычисления для строк

4. Также я предпочитаю убедиться, что я обновляю, используя уникальный идентификатор таблицы, использует ли какой-либо из приведенных выше операторов where уникальный идентификатор таблиц?

5. Все остальное работает, за исключением добавления. Я не думаю, что это решение сработает, это поле базы данных, при вводе ‘$’ оно выглядит как переменная.

Ответ №1:

Следующий код должен создать необходимый запрос. Третий параметр set() метода предотвращает утечку данных. Вы можете прочитать больше об этом в документах

 $this->db->set('total', 'bought   re_order - balance', FALSE)
            ->where('retail_id', $someid)
            ->where('stock', $somestock)
            ->where('stock_date', $somestock)
            ->update('mytable');