|  0
            - 06.03.2012 - 19:43
         | Добрый день! Хочу сделать простой скрипт php: заполняем данные, добавляются в базу, выводим надпись "инфо добавлено! id записи Х". Где ID идентификатор записи, auto_increment и с добавлением новой записи в базу автоматически повышается на 1. Решил так: сначала считываем какой в базе есть последний ID, добавляем запись, выводим предыдущий ID + 1. Есть ли еще решения? |  | ||
|  1
            - 06.03.2012 - 20:50
         | Можно такой запрос SHOW TABLE STATUS FROM `имя_базы` LIKE 'имя_таблицы' в результирующем ряду данных будет столбец "Auto_increment", содержащий значение следующего Auto_increment, которое будет присвоено вставляемой записи. |  | ||
|  2
            - 06.03.2012 - 21:01
         | есть ф-я, выводящая ID последней добавленной записи. |  | ||
|  3
            - 06.03.2012 - 21:04
         | 3-Ipro >а по подробнее можно? что это за функция? |  | ||
|  4
            - 06.03.2012 - 21:10
         | 3-Ipro >Спасибо за наводку! Оказывается есть действительно простая функция mysql_insert_id :-) |  | ||
|  5
            - 06.03.2012 - 21:13
         | Ситуация 1. вставили запись (Id=1) 2. еще вставили (Id=2) 3. удалили последнюю вставленную запись (в таблице одна запись с ID=1) 4. при попытке вставить следующую запись Auto_increment будет присвоен 3. Если считать от последнего имеющегося в таблице, то следующее значение будет 2. В общем, Вам решать как лучше для Вашего проекта. |  | ||
|  6
            - 06.03.2012 - 21:25
         | 6-vk >пускай будет, мне так и надо |  | ||
|  7
            - 07.03.2012 - 07:17
         | 7-Ar4ik369 >пускай будет, мне так и надо Не позорься и юзай mysql_insert_id() |  | ||
|  8
            - 12.03.2012 - 11:08
         | 8-CPU >не понял про не позорься, обьясни |  | ||
|  9
            - 12.03.2012 - 15:00
         | 9-Ar4ik369 > mysql_insert_id() возвращает id последнего вставленного элемента, при этом не нужно искать последний и увеличивать его на +1. |  | ||
|  10
            - 19.03.2012 - 13:37
         | А если в этот момент другой пользователь (или процесс тоже запишет свои данные? получится что у вас будет id на чужую запись... |  | ||
|  11
            - 20.03.2012 - 09:02
         | это мало вероятно. Все так делают, и все нормально работает. |  | ||
|  12
            - 20.03.2012 - 10:43
         | 12-Искусственный Интеллект1 >Тогда поговорим о вероятности... Если речь идет о малопосещаемой(пару десятков человек в день) странице с комментариями- тогда беспокоиться нечего. А если это какой нибудь банковский сервер с огромной нагрузкой?- один случа Так что если что- то писать, так делать это хорошо. И еще вопрос, кто такие "все"? |  | ||
|  13
            - 20.03.2012 - 10:50
         | 13-robot bender 0001 > mysql_insert_id вернет тебе айди именно вставленного тобой элемента, ни какого нибудь другого а твоего, который ты только что заИнсертил. |  | ||
|  14
            - 20.03.2012 - 10:58
         | 14-Суслик >Уверены? "mysql_insert_id() работает с последним выполненным запросом" |  | ||
|  15
            - 20.03.2012 - 11:21
         | 15-robot bender 0001 > внимательно читай http://www.php.su/functions/?mysql_insert_id : > mysql_insert_id() возвращает ID, сгенерированный колонкой с AUTO_INCREMENT последним запросом INSERT к серверу, на который ссылается переданный функции указатель link_identifier. Если параметр link_identifier не указан, используется последнее открытое соединение. Если вызывать эту функцию сразу после добавления данных, то все будет правильно работать. Цитата: 
 И интересно что вы предлагаете? Что значит "делать это хорошо"? |  | ||
|  16
            - 20.03.2012 - 11:26
         | 15-robot bender 0001 > а вы когда с базой работаете - где гарантии что посетитель в личном кабинете не увидит информацию другого человека ? вдруг его запрос выполнился позже А ? |  | ||
|  17
            - 20.03.2012 - 11:30
         | 16-Искусственный Интеллект1 > Цитата: 
 Цитата: 
 |  | ||
|  18
            - 20.03.2012 - 11:53
         | че то слышал, но никогда не использовал. Зачем ее применять? |  | ||
|  19
            - 20.03.2012 - 12:09
         | Ужас!, здесь кто нибудь читал что нибудь умнее чем "mysql+php для начинавших" ? |  | ||
|  20
            - 20.03.2012 - 12:40
         | 20-robot bender 0001 > так что там с блокировкой? мож ченить внятное написать? |  | ||
|  21
            - 20.03.2012 - 12:42
         | 21-Искусственный Интеллект1 >Пишите, я не против... |  | ||
|  22
            - 20.03.2012 - 12:55
         | 20-robot bender 0001 > не работаю с php, если нужны транзакции используй innoBD в mysql |  | ||
|  23
            - 20.03.2012 - 14:53
         | 16-Искусственный Интеллект1 > Вы когда ссылки даете, до конца дочитывайте написанное по ним. вырезка: Замечание: Значение в SQL функции MySQL LAST_INSERT_ID() всегда содержит последний сгенерированный ID и не обнуляется между запросами. То есть не обязательно вызывать сразу после добавления данных, узнать id последней записи можно в любой момент. 17-Суслик > где гарантии что посетитель в личном кабинете не увидит информацию другого человека ? вдруг его запрос выполнился позже А ? А вы принаджлежность записи определенному пользователю всегда определяете по очереди записи в базу.? Для этого достаточно вставить доп. поле user_id - гарантия ? |  | ||
|  24
            - 20.03.2012 - 15:42
         | Цитата: 
 |  | ||
|  25
            - 21.03.2012 - 00:22
         | 24-Kuba > это я утрирую |  | 
| Интернет-форум Краснодарского края и Краснодара |