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

Форум MySQL

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

 

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

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

тема: Запись одного столбца в другой при инсерте
 
 автор: spider-x   (29.01.2010 в 04:14)   письмо автору
 
 

Есть табличка:
id | text | idclone

id - auto increment поле
В чём проблема: надо при инсерте записать id в idclone...
Возможно ли это сделать, если при записи в запросе id = null ?

  Ответить  
 
 автор: chexov   (29.01.2010 в 05:03)   письмо автору
 
   для: spider-x   (29.01.2010 в 04:14)
 

может быть так:

<?
$q 
mysql_query("SELECT `id` FROM `table` ORDER BY `id` DESC");
$arr mysql_fetch_assoc($q);

$text 'Ваше поле TEXT';

mysql_query("INSERT INTO `table` VALUES ('NULL', '$text', '".intval($arr['id']+1)."');");

?>

  Ответить  
 
 автор: Trianon   (29.01.2010 в 08:59)   письмо автору
 
   для: spider-x   (29.01.2010 в 04:14)
 

Учитесь правильно Формулировать вопрос.


>Возможно ли это сделать, если при записи в запросе id = null ?
Да. Просто записать null в idclone.

Возможно ли это сделать, если в таблице id является автоинкрементным первичным ключом?
Тем же запросом - нет. Понадобится отдельный запрос UPDATE.

  Ответить  
 
 автор: chexov   (29.01.2010 в 09:21)   письмо автору
 
   для: Trianon   (29.01.2010 в 08:59)
 

товарисч просил чтобы уникальные id получаемые при записи дублировались, в idclone
если использовать как сказал Trianon то наверное так:

<?
mysql_query
("INSERT INTO `table` VALUES ('NULL', '$text', 'NULL');");

mysql_query("UPDATE `table`  SET `idclone`='".mysql_insert_id()."' WHERE `id`='".mysql_insert_id()."' LIMIT 1 ");
?>

  Ответить  
 
 автор: Тень   (29.01.2010 в 09:32)
 
   для: chexov   (29.01.2010 в 09:21)
 

Значение NULL в апострофы не берётся. Только тсс, никому!

  Ответить  
 
 автор: chexov   (29.01.2010 в 09:33)   письмо автору
 
   для: Тень   (29.01.2010 в 09:32)
 

спасибо тень, я никому ))))))))))))))))) NULL, '$text', '0'

  Ответить  
 
 автор: spider-x   (29.01.2010 в 11:09)   письмо автору
 
   для: chexov   (29.01.2010 в 09:21)
 

Это я знаю... проблема в том что если будут одновременные записи придётся блочить мускул... ведь на сколько я понимаю mysql_insert_id() возвращает id последней добавленной записи...
и может получиться такое:
мой insert
чужой insert
мой update с чужим id

Или я не прав?

  Ответить  
 
 автор: Valick   (29.01.2010 в 11:20)   письмо автору
 
   для: spider-x   (29.01.2010 в 11:09)
 

нет не прав будет твой апдейт с твоим айди

  Ответить  
 
 автор: spider-x   (29.01.2010 в 11:37)   письмо автору
 
   для: Valick   (29.01.2010 в 11:20)
 

Хм... спасибо что открыли мне глаза))) всегда считал что она берёт просто последний добавленный id'шник :)

  Ответить  
 
 автор: Valick   (29.01.2010 в 11:48)   письмо автору
 
   для: spider-x   (29.01.2010 в 11:37)
 

а тут ничего считать не надо, нужно просто читать мануал ;)
там, кстати сказать, много всякого интересного написано, на прошлых новогодних каникулах я читал книжку по MySQL тупо открывая на любой странице и прочитывая листов 5-6 и натыкался на вещи которые раньше упускал когда искал определенную информацию.

  Ответить  
 
 автор: spider-x   (29.01.2010 в 12:13)   письмо автору
 
   для: Valick   (29.01.2010 в 11:48)
 

периодически читаю когда необходимо... просто у меня в мозгу почему-то отложилось именно такое поведение функции... и потому обращаться к мануалу не стал)

  Ответить  
 
 автор: Trianon   (29.01.2010 в 13:19)   письмо автору
 
   для: spider-x   (29.01.2010 в 11:09)
 

Эту функцию специально реализовывали, чтоб такого поведения избежать.
Но надо понимать, что
мой insert
чужой insert
мой update с моим id

но
мой insert1
мой insert2
мой update с id из insert2

  Ответить  
 
 автор: spider-x   (29.01.2010 в 15:00)   письмо автору
 
   для: Trianon   (29.01.2010 в 13:19)
 

Ну это я знаю :)

  Ответить  
 
 автор: Trianon   (29.01.2010 в 13:17)   письмо автору
 
   для: chexov   (29.01.2010 в 09:21)
 

нет. Не так.
UPDATE tbl SET idclone = id WHERE id IS NULL

  Ответить  
 
 автор: spider-x   (29.01.2010 в 14:59)   письмо автору
 
   для: Trianon   (29.01.2010 в 13:17)
 

и не так :) а вот так:
UPDATE tbl SET idclone = id WHERE idclone IS NULL

Но это если не нужны некоторые записи с NULL в idclone

  Ответить  
 
 автор: Trianon   (29.01.2010 в 15:10)   письмо автору
 
   для: spider-x   (29.01.2010 в 14:59)
 

ну да.

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

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