Php 在数据库mysql中更新json
我想比较数据库中的两个表(Php 在数据库mysql中更新json,php,mysql,codeigniter,json,Php,Mysql,Codeigniter,Json,我想比较数据库中的两个表(table\u-foreign,table\u-submitted),如果不存在来自tabletable\u-foreign中tabletable\u-submitted数据库中的一些数据,则在tabletable\u-foreign中删除或更新它的数据 $query_tfhi = $this->db->query("SELECT * FROM table_foreign ORDER BY id desc"); foreach ($query_tfhi-&g
table\u-foreign
,table\u-submitted
),如果不存在来自tabletable\u-foreign
中tabletable\u-submitted
数据库中的一些数据,则在tabletable\u-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 {
}
}
}
}
在表中,在列id
上提交:
1
,2
,3
,4
比较table_foreign
value14中的两个表时,
5`应删除。之后是:
[{
"howinto_id": ["4"]
}, {
"howinto_id": ["3"]
}, {
"howinto_id": ["2"]
}, {
"howinto_id": ["1"]
}]
在上面的PHP代码的输出中有错误:
发生数据库错误
错误号:1064
您的SQL语法有错误;检查手册
对应于您的MySQL服务器版本,以便使用正确的语法
来自tour_foreign的靠近“('howinto_id'=>14),其中第行的id类似于'1'
1
从表中删除how_id=array('howinto_id'=>14)
像“1”
文件名:D:\xampp\htdocs\system\database\DB\u driver.php
行号:330
如何解决这些问题?我认为您的问题应该这样解决:
首先,当json obj返回数组时,您需要以数组的形式(无论如何)从json obj中检索两个表的数据
第二,你可以使用
array_diff($array1,$array2)
返回两个数组之间的差异数组
第三,您可以从差异数组中选择ID($Ids
)
和使用
$this->db->where_in(“Id”,$Id)->删除(“table_提交”)
像这样,您已经从数据库中删除了两个表之间的差异,并告诉我您是否同意PHP是PHP,SQL是SQL。不要将两者混用。这个比较(操作)可能会重复。我该怎么做?为什么要首先将JSON插入MySQL?这就是您是否要与表中JSON值的元素进行比较?这是不可能的,至少不是明智的。
[{
"howinto_id": ["4"]
}, {
"howinto_id": ["3"]
}, {
"howinto_id": ["2"]
}, {
"howinto_id": ["1"]
}]