PHP CI框架中 怎么在->like中添加括号?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP CI框架中 怎么在->like中添加括号?相关的知识,希望对你有一定的参考价值。

生成的sql语句是

我想在生成的sql语句中加括号变成这样

我在这段代码中怎么添加括号?

参考技术A ->like
->or_like
仅这个两个方式是无法添加括号的,
1.定义新的方法、或者了解一下Ci框架中有没有其他的方法(呵呵,我不了解CI框架)
2.改变输出,在输出中括号追问

怎么能看到 完整的sql语句呢 嘿嘿 我也是刚接触CI 的

追答

这个我也不知道,完全没有接触过CI.
告诉你快速的解决方法,
1.增加原方法的参数。
a.使用DW,针对Ci框架整个文件夹搜索,方法like
b.like是一个函数,肯定带了2个以上的参数,请在末尾增加2个参数$is_left=0,$is_right=0(赋初始值=0,这样不会影响其他地方的调用)
c,修改like函数内代码,如果$is_left==1,在相对应的位置增加( ,$is_right同理;
d.在使用 -> like($this->_TABLE.'.pass',$pass1,1) ,即增加传递参数

2.增加新的方法。copy一个like方式,重新起个名字.修改相对应的代码。

本回答被提问者和网友采纳
参考技术B 用c语言编程教案 参考技术C 使用\进行转义
就是这样的->like('\(\)')

ci框架 用框架自带db 添加括号,比如 like 等等左右添加括号 解决办法

 1         $this->load->model(‘station/Station_model‘,‘Station‘);
 2         // East
 3         // North
 4         $this->Station->set_where(‘isdel‘,0); 
 5         //连表查询地区  
 6         $this->Station->list_attributes = ‘region.text as sitone,station.North,station.East,station.state,station.stabianhao,station.staname,station.siteonename,station.sitetwoname,station.sitename,station.statype,station.settime,station.staid‘;
 7         $this->Station->join(‘region‘,‘region.linkageid = station.sitetwoname‘,‘left‘);
 8         if ($type!=‘all‘) {
 9             $this->Station->set_where(‘station.state‘,$type);
10         }
11 
12         $this->Station->set_where(‘ (  station.sitetwoname‘,$sitearr,‘where_in‘);
13         $this->Station->set_where(‘station.siteonename‘,$sitearr,‘or_where_in‘);
14         $this->Station->set_where(‘  1 = 2 ) and 1‘,‘1‘,‘or_where_in‘);
15 
16         $data = $this->Station->get_stewhere_all();
17         echo $this->db->last_query();die;

这样生成的sql为

 1 SELECT
 2     `dz_region`.`text` AS `sitone`,
 3     `dz_station`.`North`,
 4     `dz_station`.`East`,
 5     `dz_station`.`state`,
 6     `dz_station`.`stabianhao`,
 7     `dz_station`.`staname`,
 8     `dz_station`.`siteonename`,
 9     `dz_station`.`sitetwoname`,
10     `dz_station`.`sitename`,
11     `dz_station`.`statype`,
12     `dz_station`.`settime`,
13     `dz_station`.`staid`
14 FROM
15     `dz_station`
16 LEFT JOIN `dz_region` ON `dz_region`.`linkageid` = `dz_station`.`sitetwoname`
17 WHERE
18     `isdel` = 0
19 AND (
20     `dz_station`.`sitetwoname` IN (
21         1,
22         199,
23         203,
24         197,
25         209,
26         208
27     )
28     OR `dz_station`.`siteonename` IN (
29         1,
30         199,
31         203,
32         205,
33         211,
34         197,
35         209,
36         208
37     )
38     OR 1 = 2
39 )
40 AND 1 IN (1)

以上

 

如果不采用我的办法生成的sql为

 

SELECT
	`dz_region`.`text` AS `sitone`,
	`dz_station`.`North`,
	`dz_station`.`East`,
	`dz_station`.`state`,
	`dz_station`.`stabianhao`,
	`dz_station`.`staname`,
	`dz_station`.`siteonename`,
	`dz_station`.`sitetwoname`,
	`dz_station`.`sitename`,
	`dz_station`.`statype`,
	`dz_station`.`settime`,
	`dz_station`.`staid`
FROM
	`dz_station`
LEFT JOIN `dz_region` ON `dz_region`.`linkageid` = `dz_station`.`sitetwoname`
WHERE
 `isdel` = 0

AND `dz_station`.`sitetwoname` IN (
	‘1‘,
	‘199‘,
	‘203‘,
	‘205‘,
	‘197‘,
	‘209‘,
	‘208‘
)
OR `dz_station`.`siteonename` IN (
	‘1‘,
	‘199‘,
	‘203‘,
	‘205‘,
	‘211‘,
	‘209‘,
	‘208‘
)

  当然这是不满足需求的,至于为什么不用原生sql,因为数组不好处理,

以上是关于PHP CI框架中 怎么在->like中添加括号?的主要内容,如果未能解决你的问题,请参考以下文章

CI框架 模糊查询,链表查询

在php中,用CI框架开发程序,有两个表相连接,可以同时删除两个表相关联的数据吗?怎么写删除的代码?

php ci框架中载入css和js文件失败的原因及解决方法

025.CI4框架CodeIgniter, URI路由功能之在Routes中添加分组路由

php ci框架中载入css和js文件失败的原因及解决方法

解决ci框架php发送邮件附件中文乱码问题