我是后端编程新手,CodeIgniter是我的第一个框架。这对我来说是新的。现在,我工作的是我需要根据保存在我桌面的JSON编码数据创建一个查询。
我这里有一个分段表单,应根据条件集构建查询以查找/搜索客户档案
$segment = array(
...
'filters' => json_encode($post['filters']), //to insert the filters in json
...
);
if ($this->model->addSegments($segment))
保存在数据库中的过滤器如下所示:
{"data":[{"data":{"condition":"0","attribute":"gender","sign":"=","value":"Male"},"type":"condition","operator":"0","filter":{"operator":"0"}}],"type":"match","operator":"0"}
寻找答案,我找到了这个论坛,并将其与我遇到的问题联系起来:http://www.codingforums.com/php/202207-turning-json-object-into-nested-sql-where-clause.html
使用以下行调用与控制器相同的功能(链接解决方案):
$filter = $this->model->getSegmentsFilters($id_segment);
$filters = $this->model->parseFilterToQuery(json_decode($filter['filters'], true));
使用TRUE
中的参数json_decode
,它会将数据库中的过滤器抛出并使用如下所示的print_r
:
Array (
[0] => Array (
[data] => Array (
[condition] => 0
[attribute] => firstname
[sign] => =
[value] => John )
[type] => condition
[operator] => 0
[filter] => Array (
[operator] => 0 )
)
[1] => Array (
[data] => Array (
[condition] => 0
[attribute] => gender
[sign] => =
[value] => Male )
[type] => condition
[operator] => condition
[filter] => Array (
[operator] => 0 )
)
)
$sql
内的if(is_array)
并未显示与其连接的任何值。我想让它与另一个查询连接成一个像这个想法的WHERE子句。
$sql = "SELECT * FROM customers WHERE" . parseFilterToQuery($filters);
如果您认为我提出的解决方案/程序是正确的。我的问题是在if(is_array)
条件下,
我应该如何使用关联JSON数组?