[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: изменение поля в автоинкриментом?
Hugo_O
можно ли через инсерт изменить поле с автоинкриментом?
я вот попробовал, но не получилось, но очень нужно!
то есть у меня есть таблица с полем id(FLOAT), поле заполняется автоматически, но нужно, чтобы была возможность заполнять его и скриптом.
например есть строки с id=1 и id=2 и нужно самому добавить строку с id=1.1


п.с, либо другой вариант, как добавить в таблицу в какое-либо поле то же значение, что и будет у поля id с автоинкриментом, без повторного обращения к таблице?
то есть:
"INSERT INTO table (pole2, pole3) VALUES ('ghgfh', 'то же что и pole1')"



Спустя 6 минут, 53 секунды (22.06.2010 - 16:19) Basili4 написал(а):
Используй last_insert_id

Спустя 9 минут, 28 секунд (22.06.2010 - 16:29) Hugo_O написал(а):
Basili4
спасибо, но не мог бы ты помочь максимально оптимально составить запрос.
у меня в 3 действия только получается

Спустя 3 минуты, 43 секунды (22.06.2010 - 16:32) Basili4 написал(а):
запость эти три действия

Спустя 6 минут, 40 секунд (22.06.2010 - 16:39) Hugo_O написал(а):
1)$addmessage= mysql_query ("INSERT INTO mess (userid, songid, messagem,pos) VALUES
('$_SESSION[id]', '$songid', '$message_mysql','' )");
2)$findidresult=.... - то что ты сказал, либо с помощью limit 1
$findid=mysql_fetch_row($findidresult)
3)updateid=mysql_query("UPDATE mess SET pos='$findid[0]' WHERE id='$findid[0]'");

Спустя 9 минут, 52 секунды (22.06.2010 - 16:49) tomash написал(а):
Могу предложить такой изврат
INSERT INTO mess (userid, songid, messagem,pos ) VALUE ('$_SESSION[id]', '$songid', '$message_mysql', (SELECT max(userid) FROM mess AS m) + 1)

Спустя 2 минуты, 23 секунды (22.06.2010 - 16:51) Basili4 написал(а):
INSERT INTO mess (userid, songid, messagem,pos ) VALUE ('$_SESSION[id]', '$songid', '$message_mysql', last_insert_id+ 1) попробуй так.

Спустя 11 минут, 1 секунда (22.06.2010 - 17:02) Hugo_O написал(а):
tomash
не добавляет данные, в mysql разрешены вложенные запросы разве?
Basili4
INSERT INTO mess (userid, songid, messagem,pos ) VALUE ('$_SESSION[id]', '$songid', '$message_mysql', last_insert_id+ 1)

так ничего

INSERT INTO mess (userid, songid, messagem,pos ) VALUE ('$_SESSION[id]', '$songid', '$message_mysql', last_insert_id(id)+ 1)

а так last_insert_id(id) всегда возвращает 0, а рез-т соотв-но 1

Спустя 3 минуты, 4 секунды (22.06.2010 - 17:05) waldicom написал(а):
а так?

$query = "INSERT INTO mess (userid, songid, messagem,pos ) VALUE ('$_SESSION[id]', '$songid', '$message_mysql', last_insert_id())";


Соединение с базой используется все время одно (mysql_connect)?
С кавычками осторожнее.

Спустя 7 минут, 36 секунд (22.06.2010 - 17:13) Hugo_O написал(а):
waldicom
last_insert_id() возвращает 0
с конструкцией запроса все нормально, без этой строки все ок

Спустя 5 минут, 6 секунд (22.06.2010 - 17:18) tomash написал(а):
Hugo_O
Добавляет, только что у себя проверял. В MySqL вложенные запросы разрешены.

И с LAST_INSERT_ID() тоже работает

Спустя 8 минут, 53 секунды (22.06.2010 - 17:27) waldicom написал(а):
Цитата (Hugo_O @ 22.06.2010 - 16:13)
waldicom
last_insert_id() возвращает 0

Значит предыдущий запрос не затрагивал изменения поля с AUTO_INCREMENT.
last_insert_id() должна вызываться сразу же после выполнения запроса (обычно это INSERT)

Спустя 1 минута, 15 секунд (22.06.2010 - 17:28) Hugo_O написал(а):
tomash
$db=  mysql_connect ("localhost", "root", "123") or die("Невозможно создать соединение!");;;
mysql_select_db ("fsite")or die("Невозможно подключиться к базе данных!");

$addmessage= mysql_query ("INSERT INTO mess (userid, songid, message, uwmessage, date, posid) VALUES
('
$_SESSION[id]', '$songid', '$message_mysql', '$uwmessage_mysql', UTC_TIMESTAMP(), last_insert_id()+1)");


добавил 6 комментариев, все поля заполнены, а в поле posid(FLOAT) везде 1

id int(10) Нет Нет auto_increment

Спустя 11 минут, 51 секунда (22.06.2010 - 17:40) waldicom написал(а):
Цитата (Hugo_O @ 22.06.2010 - 16:28)
tomash
$db=  mysql_connect ("localhost", "root", "123") or die("Невозможно создать соединение!");;;
mysql_select_db ("fsite")or die("Невозможно подключиться к базе данных!");

$addmessage= mysql_query ("INSERT INTO mess (userid, songid, message, uwmessage, date, posid) VALUES
('
$_SESSION[id]', '$songid', '$message_mysql', '$uwmessage_mysql', UTC_TIMESTAMP(), last_insert_id()+1)");


добавил 6 комментариев, все поля заполнены, а в поле posid(FLOAT) везде 1

id int(10) Нет Нет auto_increment

Такое работать не будет

Спустя 3 минуты, 24 секунды (22.06.2010 - 17:43) Hugo_O написал(а):
версия 2
$addmessage= mysql_query ("INSERT INTO mess (userid, songid, message, uwmessage, date, posid) VALUES 
('
$_SESSION[id]', '$songid', '$message_mysql', '$uwmessage_mysql', UTC_TIMESTAMP(), (SELECT max(id) FROM mess)+1)");


тут то где ошибка, почему данные не добавляются...

Спустя 1 минута, 8 секунд (22.06.2010 - 17:45) Hugo_O написал(а):
waldicom
почему?

Спустя 1 минута, 32 секунды (22.06.2010 - 17:46) Basili4 написал(а):
last_insert_id() это функция php, '$_SESSION[id]', '$songid', '$message_mysql', '$uwmessage_mysql' без кавычек

Спустя 10 минут, 53 секунды (22.06.2010 - 17:57) tomash написал(а):
Hugo_O
SELECT max(id) FROM mess AS m

Спустя 1 минута, 51 секунда (22.06.2010 - 17:59) tomash написал(а):
Hugo_O
В первом варианте, INSERT еще не выполнен поэтому last_insert_id() ничего не дает.

Спустя 1 минута, 27 секунд (22.06.2010 - 18:00) tomash написал(а):
Basili4
last_insert_id это функция MySQL. Одноименная PHP функция именно ее и запрашивает))))

Чет я тут нафлудил )))

Спустя 2 минуты, 28 секунд (22.06.2010 - 18:03) Hugo_O написал(а):
tomash
все, понял, разобрался и сделал!!!!
в общем всем спасибо, особенно самым терпеливым!!!))

Спустя 8 минут, 49 секунд (22.06.2010 - 18:12) waldicom написал(а):
Цитата (Hugo_O @ 22.06.2010 - 16:45)
waldicom
почему?

Потому что сначала надо что-то вставить, а потом получать AUTO_INCREMENT
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.