Обновление JSON в базе данных MySQL - PullRequest
0 голосов
/ 02 октября 2011

Я хочу сравнение между двумя таблицами (table_foreign, table_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:

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) ОТ tour_foreign WHERE id LIKE' 1 '' в строке 1

DELETE how_id =массив ('howinto_id' => 14) FROM table_foreign WHERE id LIKE '1'

Имя файла: D: \ xampp \ htdocs \ system \ database \ DB_driver.php

Номер строки: 330

Как их починить?

1 Ответ

0 голосов
/ 02 октября 2011

Ну, я думаю, что ваша проблема должна быть исправлена ​​следующим образом:

  1. Во-первых, вам нужно извлечь данные из двух таблиц в виде массивов (во всяком случае) из json obj, так как он возвращает массив
  2. Во-вторых, вы можете использовать array_diff($array1 , $array2), который возвращает массив разностей между этими буксирными массивами
  3. В-третьих, вы можете выбрать идентификаторы из массива разностей ($ids)

    и использовать

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

Таким образом, вы удалили разность между таблицами буксировки из базы данных и скажите, все ли в порядке с вами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...