【发布时间】:2019-03-06 04:51:48
【问题描述】:
我正在从 API 获取数据并将其添加到表中。 我们有一个状态来控制网站上可见的数据 如果状态 = 可在网络上显示或状态 = 已过期,则将其从网站上删除
从 API 插入数据时,我正在运行更新和插入查询。
$final_data = $response->Results; - //API JSON 中的数据转换为数组
并检查数据是否已经在表中更新 如果数据不是他们的插入
if(is_array($final_data)) {
foreach ($final_data as $row) {
$id = $row->id
$data1 = $row->data1;
$data2 = $row->data2;
$data3 = $row->data3;
}
global $wpdb;
// Insert Data if not exists
$updateJobsDatabase_mainquery = $wpdb->get_results("SELECT id FROM ".$table_name." WHERE id = ".$id."");
if (count($updateJobsDatabase_mainquery) > 0) {
// Update query excluding id
} else {
// Insert query including id
}
}
但是,当 API 中的数据行之一的状态更改为已过期时,通过此逻辑。 它仍然保留在数据库中。
我想从本地表中删除该行。 那么什么是删除不属于 If-Else 语句的行的正确方法。即不在 API 数据中但存在于本地数据库中的额外行。
我在想if (count($updateJobsDatabase_mainquery) = 0) 会返回与 API 数据 ID 不匹配的数据。并使用删除它
$deleteIfStatus = $wpdb->query('DELETE FROM '.$table_name_temp.' WHERE id = what? ');
但是我又应该在 where 子句中添加什么?如果这个逻辑是正确的
【问题讨论】:
标签: php mysql arrays json wordpress