Синтаксическая ошибка при попытке обновить несколько таблиц в codeigniter - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь обновить несколько объединенных таблиц в codeigniter, но выдает следующую ошибку:

Номер ошибки: 1064

В синтаксисе SQL есть ошибка;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с '. carro_id INNER JOIN a ON ac. atributo_id = a. id INNER JOIN m ON c .`modelo_' в строке 1

UPDATE `carro c, atributo_carro ac, atributos a, modelos m, marcas ma
INNER JOIN ac ON c`.`id = ac`.`carro_id INNER JOIN a ON
ac`.`atributo_id = a`.`id INNER JOIN m ON c`.`modelo_id = m`.`id INNER
JOIN ma ON m`.`marca_id =` `ma`.`id` SET `marcas`.`marca` = 'Opel',
`modelos`.`modelo` = 'AMmmmmm', `carro`.`kilometragem` = '12000',
`carro`.`cor` = 'Azul', `carro`.`ano` = '1992', `carro`.`descricao` =
'dfghjk', `carro`.`valor` = '1288.00', `atributos`.`atributo` =
'rapido' WHERE `carro`.`id` = '10'

Thisмоя функция для обновления.

public function update_carro_query($id, $data)
{
    // print_r($data); die();
    $query =
    $this->db->set('marcas.marca', $data['marca']);
    $this->db->set('modelos.modelo', $data['modelo']);
    $this->db->set('carro.kilometragem', $data['kilometragem']);
    $this->db->set('carro.cor', $data['cor']);
    $this->db->set('carro.ano', $data['ano']);
    $this->db->set('carro.descricao', $data['descricao']);
    $this->db->set('carro.valor', $data['valor']);
    $this->db->set('atributos.atributo', $data['atributo']);
    $this->db->where('carro.id', $id);
    $this->db->update('carro c, atributo_carro ac, atributos a, modelos m, marcas ma INNER JOIN ac ON c.id = ac.carro_id INNER JOIN a ON ac.atributo_id = a.id INNER JOIN m ON c.modelo_id = m.id INNER JOIN ma ON m.marca_id = ma.id');
    return $query;
}

Это моя база данных таблиц и отношений

enter image description here

Запрос генерируется функцией,Что может быть причиной синтаксической ошибки?Я что-то упустил?

1 Ответ

0 голосов
/ 10 декабря 2018

Метод update () ожидает только имя таблицы в качестве первого параметра, а не полный оператор, включая объединение и т. Д.Таким образом, первый параметр будет перенесен в обратные трюки.Это приводит к синтаксической ошибке sql.

Лучше использовать query () , чтобы сгенерировать (не прямолинейный) оператор обновления.

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