Вопрос № 150780: Здравствуйте. Вопрос в следующем: Имеется база данных. В первую таблицу я вношу кое какие данные $sql0="insert into board000 (subject,m_date) values ('$subject','$now')"; $result=mysql_query($sql0,$db); Посл...
Вопрос № 150.780
Здравствуйте. Вопрос в следующем: Имеется база данных. В первую таблицу я вношу кое какие данные
$sql0="insert into board000 (subject,m_date) values ('$subject','$now')"; $result=mysql_query($sql0,$db);
После чего мне необходимо внести данные во вторую таблицу, при этом узнав в какой номер ячейки были внесены первые данные. Делаю это так:
$sql1="select id from board000 where subject='$subject'"; $result=mysql_query($sql1,$db); $myrow=mysql_fetch_array($result); $id=$myrow["id"];
$sql6="insert
into board001 (id,name,date,message,id_email) values ('$id','$name','$now','$text','$id_email')"; $result=mysql_query($sql6,$db);
Может можно как-то упростить, что б не делать лишние запросы к БД? Как ещё можно узнать этот id?
Отправлен: 17.11.2008, 04:11
Вопрос задал: Spaser (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Бородин Александр Олегович
Здравствуйте, Spaser! Можно вызывать функцию mysql_insert_id - если ее вызвать сразу после mysql_query('INSERT INTO ...'), она возвращает последний вставленный в таблицу id - значение первичного ключа. Не совсем однозначно ясно, как эта функция работает. По одним сведениям, она возвращает просто последний вставленный ID, по другим - последний вставленный ID в данном открытом соединении. Последнее принципиально важно, потому что тогда решаются проблемы безопасности. Но Вам стоит попробовать
такой способ, потому что в любом случае вероятность того, что кто-то вызовет сбой, мала. Сбой заключается в том, что между тем, когда Вы вставляете строку в таблицу и когда Вы ловите ID, проходит некоторое время и за это время кто-нибудь может вклиниться в работу. Время это мало - обычно доли секунды. Но тут все зависит, по-моему, лишь от того, насколько быстро сервер работает Ваш. Представьте, что все зависнет на середине....:) Итого: Mysql_query('INSERT INTO ..
.'); $id = mysql_insert_id(// идентификатор соединения);
С уважением, Мальчиш-Плохиш
Ответ отправил: Бородин Александр Олегович (статус: Профессионал) Россия, Новосибирск Тел.: +7-923-245-3366 ICQ: 346988855 ---- Ответ отправлен: 17.11.2008, 06:51
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 235714 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 4 Комментарий оценки: 4 только потому, что Вы сами ответили на свой вопрос. А именно: если кто-то вклинится... А так, спасибо.
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.