【发布时间】:2011-11-29 08:09:12
【问题描述】:
我想在数据库中的两个表(table_foreign,table_submits)之间进行比较,如果数据库中的表table_submits 中的表table_foreign 中不存在某些数据,则删除表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 {
}
}
}
}
我在how_id 列上的表table_foreign 中有(此数据存储(插入)与json_encode 在行数据库表的列上):
[{
"howinto_id": ["14"]
},{
"howinto_id": ["5"]
},{
"howinto_id": ["4"]
}, {
"howinto_id": ["3"]
}, {
"howinto_id": ["2"]
}, {
"howinto_id": ["1"]
}]
在table_submits 列id 上的表中:
1、2、3、4
应该删除table_foreign 值14,5 中的两个表之间的比较。之后是这样的:
[{
"howinto_id": ["4"]
}, {
"howinto_id": ["3"]
}, {
"howinto_id": ["2"]
}, {
"howinto_id": ["1"]
}]
在 PHP 代码上面的输出中有错误:
发生数据库错误
错误号:1064您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 '('howinto_id'=>14) FROM tour_foreign WHERE id LIKE '1'' 在行附近 1
DELETE how_id = array('howinto_id'=>14) FROM table_foreign WHERE id 喜欢“1”
文件名:D:\xampp\htdocs\system\database\DB_driver.php
行号:330
如何解决?
【问题讨论】:
-
PHP 是 PHP,SQL 是 SQL。不要将两者混为一谈。
-
这个比较(操作)我该怎么做?
-
你为什么首先将 JSON 插入 MySQL?这是bad design
-
您想与表中的 JSON 值的元素进行比较吗?这是不可能的,至少不是任何理智的方式。
标签: php mysql codeigniter json