Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Странное поведение INSERT IGNORE INTO

Сообщения:  [1-5] 

 
 автор: tonnal   (03.01.2007 в 16:30)   письмо автору
 
   для: cheops   (03.01.2007 в 13:08)
 

я возможно слишком мелко написал что возвращается максимальный ID + 1, ваше утверждение былобы верным если пытаться вставить строку которая уже есть и ее ID максимальный, а если инсерт делать к произвольной строке, то это не работает.

   
 
 автор: cheops   (03.01.2007 в 13:08)   письмо автору
 
   для: tonnal   (03.01.2007 в 03:13)
 

Почему, вы можете поступить следующим образом
<?php
 
if(mysql_affected_rows()) $this->insert_id   mysql_insert_id();
 else 
$this->insert_id   mysql_insert_id() - 1;
?>

   
 
 автор: tonnal   (03.01.2007 в 03:13)   письмо автору
 
   для: cheops   (03.01.2007 в 02:40)
 

Даже если я узнаю что запись не вставлена (вернет 0), то придется делать еще один подзапрос, а это как то не красиво. может есть способ заставить mysql_insert_id() вернуть нужный id?

   
 
 автор: cheops   (03.01.2007 в 02:40)   письмо автору
 
   для: tonnal   (03.01.2007 в 02:26)
 

А вы перед тем как обращаться к mysql_insert_id() используйте функцию mysql_affected_rows(), которая вернёт количество реально вставленных записей.

   
 
 автор: tonnal   (03.01.2007 в 02:26)   письмо автору
 
 

Задача записать в БД строку запрашиваемой страницы (для статистики), дабы не делать предзапрос на существование (адрес поле уникальное) решил поюзать INSERT IGNORE INTO.

           $sql = "INSERT IGNORE INTO
                     `counter_pages`
                   SET
                     URL = '".$this->user_info['site_page']."'";
           mysql_query($sql);
           $this->insert_id   = mysql_insert_id();


Все странность в том, что при вставке новой записи mysql_insert_id() возвращает правильный ID, а если запись уже есть то несуществующий ID который равен: (max_ID+1)

mysql 3.23.53, php 4.3

каке мысли? и всех с НГ!

   

Сообщения:  [1-5] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования