hyperlau 发表于 2017-6-26 12:34:21

用查询构造器如何在语句中调用mysql函数?

本帖最后由 hyperlau 于 2017-6-26 12:35 编辑

例如我要插入时间到一个字段,需要调用mysql的now()函数,如何在查询构造器里写?难道只能先用query得到结果后再用查询构造器吗?那样的话就是调用两次数据库了,如何在一次数据库查询中解决?
谢谢!

Hex 发表于 2017-6-26 15:39:50

query() 这个可以写任何 SQL 语句。

hyperlau 发表于 2017-6-27 10:27:36

本帖最后由 hyperlau 于 2017-6-27 10:33 编辑

Hex 发表于 2017-6-26 15:39
query() 这个可以写任何 SQL 语句。
例如我要插入一行数据,代码差不多像这样:
$data=array(
      'name'=>'jack',
      'time'=>'now()'
);
$this->db->insert('table',$data);
那now() 会被转义。
我要实现这个需求的话就只能先执行:
$now=$this->db->query('select now()')->row_array()['now()'];
然后把$now传给$data['time']再执行insert(),
但这就相当于有两次mysql调用了,如何直接在$this->db->insert()里调用now()?

Hex 发表于 2017-6-27 10:48:48

hyperlau 发表于 2017-6-27 10:27
例如我要插入一行数据,代码差不多像这样:
$data=array(
      'name'=>'jack',


$this->db->insert() 这是 querybuilder,这个会转义,想不转义就直接使用 $this->db->query() 这个可以写正常的 SQL 语句,也就是你在 phpmyadmin 里测试 ok 的都可以直接用。

Michael锐生 发表于 2017-6-27 11:01:17

本帖最后由 Michael锐生 于 2017-6-27 11:03 编辑

需要转译的字段单独写set就可以,其他按原来的写
$this->db->set('time', 'now()', FALSE)->insert('table', $otherData);

hyperlau 发表于 2017-6-27 11:15:38

Michael锐生 发表于 2017-6-27 11:01
需要转译的字段单独写set就可以,其他按原来的写

哦哦,明白了!非常感谢!!
页: [1]
查看完整版本: 用查询构造器如何在语句中调用mysql函数?