我的数据库使用UUID作为主键。当我插入到DB (mariaDB)中时,我需要做:
insert into table_name (id, parent_id, name,... etc. )
values (UUID_TO_BIN(UUID()), 'a UUID', 'record name', .etc)我想使用CI的insert_string函数,但是这个数组:
$data = array(
'id' => 'UUID_TO_BIN(UUID())',
'name' => 'record name',
'parent_id' => 'UUID_TO_BIN(' . $parent_id . ')'
);
$this->db->insert_string('table_name',$data);...I认为不会起作用,因为每个结果都被转义,因此CI将转义包括函数在内的整个文本,而不仅仅是parent_id值中UUID_TO_BIN函数内部的内容。
我正在尝试弄清楚parent_id是否有可能运行给定的函数。否则,我想最简单的方法是在PHP中从十六进制转换为BIN,但这会破坏SQL吗?
发布于 2019-08-14 11:32:38
您可以使用set()方法,该方法接受可选的第三个参数($escape),如果在id列上设置为FALSE,该方法将防止数据被转义。
$data = array(
// 'id' => 'UUID_TO_BIN(UUID())',
'name' => 'record name',
'parent_id' => 'UUID_TO_BIN(' . $parent_id . ')'
);
//set id column value as UUID
$this->db->set('id', 'UUID_TO_BIN(UUID())', FALSE);
$this->db->insert_string('table_name', $data);https://stackoverflow.com/questions/57485222
复制相似问题