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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Как узнать все значения присвоемнные автоинкрементом?
 
 автор: tAleks   (12.12.2010 в 18:28)   письмо автору
 
 

Добавляю данные в таблицу многострочным INSERT'ом, например 5 записей. В таблице есть поле автоинкрементное. Можно ли как-нибудь после выполнения запроса добавления записи узнать ВСЕ значения, которые были присвоены автоинкрементом?

  Ответить  
 
 автор: Gubichev   (12.12.2010 в 18:40)   письмо автору
 
   для: tAleks   (12.12.2010 в 18:28)
 

mysql_insert_id()
или запрос last_insert_id()

  Ответить  
 
 автор: Trianon   (12.12.2010 в 19:06)   письмо автору
 
   для: tAleks   (12.12.2010 в 18:28)
 

Инкрементное поле - это первичный ключ, и никакое другое.
Возвращен будет (может быть) ключ первой добавленной записи и их количество.
Все добавленные идут с четким единичным инкрементом, и никакими другими оказаться не могут.

  Ответить  
 
 автор: Лена   (13.12.2010 в 11:01)   письмо автору
 
   для: tAleks   (12.12.2010 в 18:28)
 

Может, добавить поле и начально установить в нем значение 0.
Вставили запись.
Сделали SELECT * FROM table WHERE col = 0 - это и есть последние вставленные записи.
И после выборки UPDATE table SET col = 1

  Ответить  
 
 автор: Trianon   (13.12.2010 в 13:23)   письмо автору
 
   для: Лена   (13.12.2010 в 11:01)
 

так а зачем, когда mysql_insert_id() и mysql_affected_rows() вернут и так все необходимое?

  Ответить  
 
 автор: tAleks   (21.12.2010 в 21:13)   письмо автору
 
   для: tAleks   (12.12.2010 в 18:28)
 

Нет, вопрос маленько не об этом. Уточняю.

Что такое автоинкремент я заню, как узнать последний при вставке ОДНОЙ записи, я знаю.

Вопрос в следующем.

В БД есть несколько записей, сколько неизвестно, какой последний ID тоже не известно.

Вставляю многострочным INSERT'ом, к примеру 5 записей. И надо узнать, какие этим пяти записям были присвоены значения первичного ключа, ватоинкрементом. То что они идут подряд и отличаются на единицу от предыдущего я знаю.

  Ответить  
 
 автор: Gubichev   (21.12.2010 в 21:17)   письмо автору
 
   для: tAleks   (21.12.2010 в 21:13)
 

Если вы всё знаете, зачем спрашиваете?

  Ответить  
 
 автор: tAleks   (21.12.2010 в 21:39)   письмо автору
 
   для: Gubichev   (21.12.2010 в 21:17)
 

Я не говорил что знаю ВСЕ.
Я спрашиваю о том, чего не знаю.

  Ответить  
 
 автор: Gubichev   (21.12.2010 в 22:02)   письмо автору
 
   для: tAleks   (21.12.2010 в 21:39)
 

Вы уже получили ответ на свой вопрос. Разуйте глаза.

  Ответить  
 
 автор: tAleks   (21.12.2010 в 22:43)   письмо автору
 
   для: Gubichev   (21.12.2010 в 22:02)
 

.

  Ответить  
 
 автор: Trianon   (21.12.2010 в 23:44)   письмо автору
 
   для: tAleks   (21.12.2010 в 21:13)
 

Вставляете записи
mysql_insert_id возвращает 21.
mysql_affected_rows возвращает 5.

Следовательно, присвоенные ключи - 21, 22, 23, 24, 25
Что тут неизвестно?

  Ответить  
 
 автор: Красная_шляпа   (22.12.2010 в 01:17)   письмо автору
 
   для: tAleks   (21.12.2010 в 21:13)
 


<?php
// ...
$sql "show table status `{$database_name}` like `{$table_name}`;";
$info mysql_fetch_array(mysql_query($sql));
print_r($info);

  Ответить  
Rambler's Top100
вверх

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