更新数据库mysql中的json

时间:2011-10-02 08:56:02

标签: php mysql codeigniter json

我希望在数据库中比较两个表(table_foreigntable_submits),如果不存在数据库中表table_foreign中的表table_submits中的某些数据,则将其删除在表table_foreign或更新。

$query_tfhi = $this->db->query("SELECT * FROM table_foreign ORDER BY id desc");
foreach ($query_tfhi->result() as $row) {
    $data_hi = json_decode($row->how_id, true);
    foreach ($data_hi as $hitf) {
        foreach ($hitf['howinto_id'] as $val_hitf) {
            //echo $val_hitf.'<br>';

            $query_delhi = $this->db->query("SELECT * FROM table_submits WHERE id LIKE '$val_hitf'");
            if ($query_delhi->num_rows() == 0) {
                //echo $val_hitf;
                $this->db->query("DELETE how_id = array('howinto_id'=>$val_hitf) FROM tour_foreign WHERE id LIKE '$row->id'");
            } else {
            }
        }
    }
}

我在列table_foreign的表how_id中(此数据存储(已插入),json_encode在行数据库表中的列上):

[{
    "howinto_id": ["14"]
},{
    "howinto_id": ["5"]
},{
    "howinto_id": ["4"]
}, {
    "howinto_id": ["3"]
}, {
    "howinto_id": ["2"]
}, {
    "howinto_id": ["1"]
}]
table_submits的表id中的

1234

应删除table_foreign14, 5中的两个表格之间的比较。在此之后它是:

[{
    "howinto_id": ["4"]
}, {
    "howinto_id": ["3"]
}, {
    "howinto_id": ["2"]
}, {
    "howinto_id": ["1"]
}]

在上面的输出中,PHP代码有错误:

  

发生数据库错误
错误编号:1064

     

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近'('howinto_id'=&gt; 14)FROM tour_foreign WHERE id LIKE'1''at line   1个

     

删除how_id = array('howinto_id'=&gt; 14)FROM table_foreign WHERE id   喜欢'1'

     

文件名:D:\ xampp \ htdocs \ system \ database \ DB_driver.php

     

行号:330

如何修复它们?

1 个答案:

答案 0 :(得分:0)

我认为你的问题应该像这样解决:

  1. 首先,你需要从json obj中检索两个表的数据作为数组(无论如何),因为它返回数组
  2. 其次你可以使用  array_diff($array1 , $array2) 返回那些两个数组之间的差异数组
  3. 第三,您可以从差异数组($ids

    中选择ID

    并使用

    $this->db->where_in("Id",$ids)->delete("table_submits")

  4. 像这样你已经从数据库中删除了两个表之间的差异,并告诉我你是否还可以