que iba a hacer una pregunta similar sólo un poco diferente, pero el problema era el mismo: que necesitaba para actualizar una cita con un intervalo (expiry_date = expiry_date + interval 3 month
) y Phil Sturgeon's answer resolvió el problema.
Sin embargo, lo que me di cuenta es que todavía se puede utilizar la matriz para los campos que pueden tener las cotizaciones, lo que significa que se podría escribir:
$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);
Dónde $this->db->last_query()
seria:
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
Observe que los campos donde se usó set()
no tienen citas y aparecen en primer lugar. El resto de la consulta tiene retrocesos (dejando "CodeIgniter protect the remaining fields").
Lo siento amigo, pero hay, ActiveRecord simplemente escapa toda la entrada como una cadena a menos que se indique lo contrario. –
Debió haber llegado tarde, o llegué al bar temprano. Whoops. – Zack