Stavo per fare una domanda simile solo un po 'diverso, ma il problema era la stessa: avevo bisogno di aggiornare un appuntamento con un intervallo (expiry_date = expiry_date + interval 3 month
) e Phil Sturgeon's answer ha risolto il problema.
Tuttavia, ciò che ho capito è che si può ancora utilizzare la matrice per i campi che possono avere le citazioni, il che significa che si potrebbe scrivere:
$this->db->set('received_qty', 'received_qty + 1', FALSE);
$this->db->set('expired_date', 'CURDATE() + INTERVAL 10 DAY', FALSE); //extra example 1
$update['received_date'] = date("Y-m-d");
$update['receiver'] = $receiver_name; //extra example 2
$this->db->where($where);
$this->db->update('vrs_distribution', $update);
Dove $this->db->last_query()
visualizzerà:
UPDATE `vrs_distribution`
SET `received_qty` = received_qty + 1,
`expiry_date` = CURDATE() + INTERVAL 10 DAY, #extra example 1
`received_date` = '2015-07-01 16:00:00',
`receiver` = 'strike_noir', #extra example 2
WHERE #where clause with backticks
Si noti che i campi in cui è stato utilizzato set()
non hanno virgolette e vengono visualizzati in primo luogo. Il resto della query ha arretrati (lasciando "CodeIgniter protect the remaining fields").
Scusate amico ma, ActiveRecord scappa semplicemente tutti gli input come stringa, a meno che non venga indicato diversamente. –
Doveva essere in ritardo, o ho colpito il bar presto. Ops. – Zack