Перейти к содержанию

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

Ребят, нужна помощь компетентных людей. 

При разработке наткнулся на такую проблемку:



//manufacturer
	
$this->db->query("INSERT IGNORE INTO " . DB_PREFIX . "manufacturer SET name = '" . $row->Brand . "'");
			
$manufacturer_id = $this->db->getLastId();

$this->db->query("INSERT IGNORE INTO " . DB_PREFIX . "manufacturer_to_store SET manufacturer_id = '" . (int)$manufacturer_id . "', store_id = '0'");

Это выполняется в цикле, при добавлении товаров. При попадании на товар у которого $row->Brand дублируется и оператор INSERT IGNORE пропускает его, то $manufacturer_id = $this->db->getLastId() становится 0. Почему он обнуляется и как можно по-другому решить эту проблему? Мне нужно чтобы он брал число из AUTO_INCREMENT.

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


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

mysql_insert_id() возвращает 0, если последний запрос не работал с AUTO_INCREMENT полями. Если вам надо сохранить значение, убедитесь, что mysql_insert_id() вызывается сразу после запроса.

 

Т.е. инсерта не было - 0

 

для послденего

 

"SELECT max(manufacturer_id)+1 FROM " . DB_PREFIX . "manufacturer"

 

Или

$result = $this->db->query("SHOW TABLE STATUS  LIKE manufacturer"); 
$last_id = $result->row['Auto_increment']; 

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


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

Признателен за помощь. Действительно, получилось с SHOW TABLE STATUS.

 

Получилось так:

$last_id = $this->db->query("SHOW TABLE STATUS LIKE '" . DB_PREFIX . "manufacturer'");
$manufacturer_id = ($last_id->row['Auto_increment'] - 1);

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


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

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

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

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

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

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

Войти

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

Войти

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

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.