Php 代码点火器逃逸串
我正在尝试向查询中插入联接,如下所示:Php 代码点火器逃逸串,php,codeigniter,activerecord,Php,Codeigniter,Activerecord,我正在尝试向查询中插入联接,如下所示: $this->db->join( "(SELECT DISTINCT(fo.Order_ID) FROM order fo INNER JOIN order_item foi ON fo.Order_ID = foi.Order_ID INNER JOIN product_group fpg ON fpg.Product_ID = foi.Product_ID INNER JOIN group fg ON fg.Group_ID = fpg.G
$this->db->join(
"(SELECT DISTINCT(fo.Order_ID)
FROM order fo
INNER JOIN order_item foi ON fo.Order_ID = foi.Order_ID
INNER JOIN product_group fpg ON fpg.Product_ID = foi.Product_ID
INNER JOIN group fg ON fg.Group_ID = fpg.Group_ID
WHERE Group_Name IN". $groups.")G",
'G.Order_ID = o.Order_ID',
'inner');
$groups
是一个数组,因为我不能使用$this->db->where_in()
,所以我用以下方法来转义它:
$groups = array_map(function($group){return $this->db->escape($group);}, $groups);
$groups = '(' . implode(',', $groups).')';
这对大多数输入都很好,但似乎并没有真正转义字符串。
例如,如果
$groups=array('^*&','?!?')
,数据库抛出错误:
Unclosed quotation mark after the character string 'NULL!'
查询的相关(中断)部分是:
WHERE Group_Name IN('^*&','NULL!
如何正确处理阵列?如果
其中,“$groups.”G中的组名称“
及
$groups是一个数组
$groups=数组(“^*&”,“?!?”)
然后
其中应生成以下部分字符串:
WHERE Group_Name IN ('^*&','?!?')G",
WHERE Group_Name IN ('^*&','?!?')G",