如何将 insert_string 查询助手与 SQL 函数一起使用?

How to use insert_string query helper with SQL function?

我的数据库使用 UUID 作为主键。当我插入数据库(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);

...我认为行不通,因为每个结果都被转义了,所以 CI 将转义包括函数在内的整个文本,而不仅仅是 UUID_TO_BIN 函数中的内容parent_id 值。

我想弄清楚 parent_id 到 运行 给定的函数是否有可能。否则,我想最简单的方法是在 PHP 中从 HEX 转换为 BIN,但这会破坏 SQL 吗?

您可以使用 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);

more on set() method.