【发布时间】:2019-12-17 03:25:15
【问题描述】:
我需要增加 CodeIgniter 数据库中某个字段的值。
我了解 CI 不允许转义值,将 $this->db->set() 中的第三个参数设置为 FALSE。
我正在从一个数组中插入多个数据,据我所知,将它们全部转义(数据来自表单)并不安全,因为我只需要在一个字段中增加。
如何避免单独插入此值?
我当前的代码:
$dataCliente = array(
'nombre' => $nombre,
'email' => $email,
'genero' => $genero,
'reserva_next' => $fecha,
'reserva_next_id' => $reserva_id,
'reserva_lastreq' => time(),
'reservas' => "reservas+1"
);
$this->db->where('telefono', $telefono);
$this->db->update('clientes', $dataCliente);
编辑:我已经用简单和双引号进行了测试,在这两种情况下,字段的值都保存为 0(零)
前面的代码没有产生预期的结果。但这有效:
$dataCliente = array(
'nombre' => $nombre,
'email' => $email,
'genero' => $genero,
'reserva_next' => $fecha,
'reserva_next_id' => $reserva_id,
'reserva_lastreq' => time(),
//'reservas' => "reservas+1"
);
$this->db->where('telefono', $telefono);
$this->db->update('clientes', $dataCliente);
$this->db->set('reservas', 'reservas+1', FALSE);
$this->db->where('telefono', $telefono);
$this->db->update('clientes', $dataCliente);
我的意图是只使用一个语句来插入数据。 使用第一个代码是否可以不转义数组的单个元素?
非常感谢!
【问题讨论】:
-
试试 'reservas' => 'reservas'+ 1'
-
@DevsiOdedra 您的值似乎格式不正确,只剩下一个引号。你能纠正它来测试它吗?谢谢!
-
refer stackoverflow.com/a/20183089/6309457 有值 ib
set,在数组中使用该值 -
@DevsiOdedra 更改为:
'reservas' => '`reservas`+1'但在更新时,该值设置为 0(零) -
我想知道为什么在您的“工作”示例中,您执行了两次更新?您只需要数组和最后 3 个语句即可。
标签: php codeigniter codeigniter-3 query-builder codeigniter-query-builder