将关联JSON数组转换为嵌套SQL WHERE子句

时间:2016-10-25 11:30:28

标签: php mysql arrays json codeigniter

我是后端编程新手,CodeIgniter是我的第一个框架。这对我来说是新的。现在,我工作的是我需要根据保存在我桌面的JSON编码数据创建一个查询。

我这里有一个分段表单,应根据条件集构建查询以查找/搜索客户档案

Segmentation form

    $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数组?

0 个答案:

没有答案