Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

GetLastId() обнуляется?


Recommended Posts

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

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



//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']; 
  • +1 1
Надіслати
Поділитися на інших сайтах

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

 

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

$last_id = $this->db->query("SHOW TABLE STATUS LIKE '" . DB_PREFIX . "manufacturer'");
$manufacturer_id = ($last_id->row['Auto_increment'] - 1);
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.