Рекомендуемые сообщения

Запрос не добавляет запись в бд.

Вот запрос:

public function filterCategory() {
	$query =$this->db->query("INSERT INTO " . DB_PREFIX . "category_filter SET category = '1', filter_id = '5'");

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
mpn2005    334

В данной таблице нет поля - category

Вместо него надо поставить category_id и всё сработает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
public function filterCategory() {
	$query =$this->db->query("INSERT INTO " . DB_PREFIX . "category_filter SET category_id = '1', filter_id = '5'");
	}

К сожалению тоже не срабатывает и в бд информацию не добавляет 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Запрос не посредственно из mysql

INSERT INTO `oc_category_filter`(`category_id`, `filter_id`) VALUES (1,5);

срабатывает замечательно.

 

А вот из php не срабатывает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
mpn2005    334

Так не бывает. Может не в той базе смотрите результат.

И смотрите лог ошибок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как посмотреть лог ошибок?

 

С базой ошибиться не могу с таблицей тоже.

 

Этот запрос пытаюсь встроить в файл обмена с 1с. Может последовательность влияет роль, хотя запрос идет самым последним в файле.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ArtemPitov    386

Задам глупый вопрос 

А саму функцию Вы случайно не забыли вызвать в контролере ? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вроде бы подключено

//Добавляем фильтр в категорию
		$this->model_tool_exchange1c->filterCategory();

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ArtemPitov    386

а в самом контролере он и индексе  ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не совсем понятно про индекс?

 

Вот это подключение выполнено в \www\admin\controller\module\exchange1c.php больше контроллера вроде нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ArtemPitov    386

тогда все должно быть тут

function index {

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты


<?php

class ControllerModuleExchange1c extends Controller {

private $error = array();

public function index() {

...

...

...

//Добавляем фильтр в категорию

$this->model_tool_exchange1c->filterCategory();

}

...

...

...}

?>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как правильно подключить данный запрос к модулю OpenCart Exchange 1C?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ArtemPitov    386

а кто его знает, это гадания на хрустальном шаре 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ясно, придется идти другим путем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    330
Запрос не посредственно из mysql

И вы не замечаете в чём кардинальная разница между этими запросами?

Подсказка: SET - это часть UPDATE запроса.

 

И, похоже, кроме Otvet никто этого так и не заметил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
mpn2005    334

Не начинайте детский сад.

Первый попавшийся запрос движка:

$this->db->query("INSERT INTO " . DB_PREFIX . "product_option SET product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value = '" . $this->db->escape($product_option['option_value']) . "', required = '" . (int)$product_option['required'] . "'");

Или хотя бы попробовали выполнить такой запрос в mysql.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ArtemPitov    386

И вы не замечаете в чём кардинальная разница между этими запросами?

Подсказка: SET - это часть UPDATE запроса.

 

И, похоже, кроме Otvet никто этого так и не заметил.

прошу мануал 

 

http://dev.mysql.com/doc/refman/5.7/en/insert.html

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (partition_name,...)]
    SET col_name={expr | DEFAULT}, ...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ArtemPitov    386

и еще вот такой синтаксис есть 

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (partition_name,...)]
    [(col_name,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dotrox    330

 

прошу мануал 

 

http://dev.mysql.com/doc/refman/5.7/en/insert.html

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (partition_name,...)]
    SET col_name={expr | DEFAULT}, ...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

А действительно.

Как говорит Гугл, это не часть SQL, а синтаксис конкретно MySQL.

 

Первый попавшийся запрос движка

По идее, это значит, что ОК несовместим, например, с PostgreSQL.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ArtemPitov    386

А действительно.

Как говорит Гугл, это не часть SQL, а синтаксис конкретно MySQL.

 

 

 

По идее, это значит, что ОК несовместим, например, с PostgreSQL.

драйвер есть, по поводу совместимость не скажу, не тестировал, но вроде в документации нет SET

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
interpol    0

public function filterCategory() {
    $query =$this->db->query("INSERT INTO " . DB_PREFIX . "category_filter SET category = '1', filter_id = '5'");
category_filter как я думаю это таблица
На выходе рабочий код

public function filterCategory() {

    $query =$this->db->query("INSERT INTO " . DB_PREFIX . "`category_filter`(`category`, `filter_id`) VALUES ('1', '5')");

Изменено пользователем interpol

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
interpol    0

Кстати рекомендую еще раз прочитать документацию а точнее синтаксис insert

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
mpn2005    334

Есть подозрение, что там дело даже не в запросе.

Возможно просто не доходит дело до выполнения этого кода.

 

Вставьте перед вызовом функции:

$this->log->write('DEBUG: test');

И посмотрите, появляется ли этот текст в логе.

Если нет, то копайте почему не вызывается функция контроллера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу