- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Чето туплю, не могу вкурить.
Задача получить номер записи в базе, перед добавлением INSERT INTO
после инсерта можно так $t = mysql_insert_id();
но мне надо знать номер ID до вставки INSERT INTO
Спасибо.
но мне надо знать номер ID до вставки INSERT INTO
Можно поинтересоваться - зачем?
INSERT прекрасно работает и без этого...
1. auto_increment
2. SELECT MAX(id)+1 FROM table
3. http://php.net/manual/ru/function.mysql-insert-id.php
Можно поинтересоваться - зачем?
INSERT прекрасно работает и без этого...
Да какой то редиска в доске организовал названия картинок таким образом что картинки имеют название в виде ID новости типа 123.jpg 22.jpg
У меня идет генерация картинки раньше INSERT но проблема не в этом.
В INSERT есть поле image в которое надо кинуть ID добавляющейся новости.
SHOW TABLE STATUS [FROM DB] LIKE 'MY_TABLE'
1. auto_increment
2. SELECT MAX(id)+1 FROM table
3. http://php.net/manual/ru/function.mysql-insert-id.php
И что будет, если в этот замечательный момент другой поток вставляет запись? =))))
seosniks:
Первым запросом создаёте запись, получаете её ID, после выполнения запроса (INSERT). Вторым запросом вписываете в неё вычисленное на основе ID значение(UPDATE), или например удаляете запись, если она вдруг не нужна.
И что будет, если в этот замечательный момент другой поток вставляет запись? =))))
seosniks:
Первым запросом создаёте запись, получаете её ID, после выполнения запроса (INSERT). Вторым запросом вписываете в неё вычисленное на основе ID значение(UPDATE), или например удаляете запись, если она вдруг не нужна.
Те же яйца вид сбоку - что произойдет если другой поток вставит запись до "второго" запроса?
Решается такая задача либо транзакциями с локом на таблицу либо обеспечением уникальности id - напр использованием GUID
Еще один вариант - вставляете новую запись причем в ваше поле image записывайте GUID. После этого делайте апдейт:
UPDATE table SET image = id WHERE image=$GUID
А местами блоки поменять никак обработки?
А местами блоки поменять никак обработки?
Проблема в том что надо загоднять в INSERT сразу ID новости.
В общем решил проблему так
Сначала лезем в базу узнаем текущее значение ID потом добавляем его кда надо.
А вот интересно я чето не заметил, по идее надо делать +1 к текущему значению.
Надо проверить.
Хотя проверил, грузит именно так как надо.
Те же яйца вид сбоку - что произойдет если другой поток вставит запись до "второго" запроса?
Решается такая задача либо транзакциями с локом на таблицу либо обеспечением уникальности id - напр использованием GUID
Еще один вариант - вставляете новую запись причем в ваше поле image записывайте GUID. После этого делайте апдейт:
UPDATE table SET image = id WHERE image=$GUID
А всё будет хорошо - он вставит запись со следующим ID и второй экзкмпляр скрипта будет работать именно с ним, т.к. mysql_insert_id() возращает ID записи вставленной не последним запросом на mysql сервере, а последним запросом в рамках текущего подключения. И не надо ни транзакций ни локов.
seosniks:
Ваш код будет корректно работать до тех пор, пока у вас не будет конкурентных запросов на вставку. В реальном приложении он некорректен напрочь, т.к. между получением ID и INSERT, может пройти ещё один INSERT для которого был получен тот же ID.
mysql_insert_id() возращает ID записи вставленной не последним запросом на mysql сервере, а последним запросом в рамках текущего подключения.
вы бы не могли ссылочку подкинуть подтверждающую эту информацию? а то мне не удалось найти.
спс.
upd: нашел, вы правы "The value of mysql_insert_id() is affected only by statements issued within the current client connection. It is not affected by statements issued by other clients."