Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

Чемпионы рейтинга экспертов в этой рассылке

Николай Владимирович / Н.В.
Статус: Академик
Рейтинг: 83
∙ повысить рейтинг >>
Василий Сергеевич
Статус: 3-й класс
Рейтинг: 68
∙ повысить рейтинг >>
Иван Сергеевич
Статус: Студент
Рейтинг: 40
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 1044
от 22.11.2008, 08:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 422, Экспертов: 44
В номере:Вопросов: 1, Ответов: 1

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 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 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 4
    Комментарий оценки:
    4 только потому, что Вы сами ответили на свой вопрос. А именно: если кто-то вклинится... А так, спасибо.


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

    Отправить вопрос экспертам этой рассылки

    Приложение (если необходимо):

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2008, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.12 от 19.11.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное