Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2011, 22:07   #1
SkrudjMakdak
Форумчанин
 
Регистрация: 14.04.2010
Сообщений: 145
По умолчанию несколько запросов в БД

делается несколько UPDATE или INSERT INTO запросов. и если один запрос не выполняется по каким то причинам, то не должен выполниться не один запрос. Можно это реализовать?? или все таки нужно надеяться на удачу, что бы все запросы выполнились)))

если не выполнился первый запрос, то это можно отменить так:
$query=query('запрос');
if ($query)
$query=query('следующий запрос');
else
echo 'ошибка';

а что если не выполнился последний(даже достаточно любого после первого) запрос?? выполнять query('delete'); предыдущих записей??
SkrudjMakdak вне форума Ответить с цитированием
Старый 11.08.2011, 22:14   #2
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
По умолчанию

Покурите в сторону Join и и связей в базе данных. Ну там One to Many, Many to one, one to one. Это вам должно помочь.

благодаря Join возможно выполнить сразу несколько команд за один запрос
dem66 вне форума Ответить с цитированием
Старый 11.08.2011, 22:26   #3
SkrudjMakdak
Форумчанин
 
Регистрация: 14.04.2010
Сообщений: 145
По умолчанию

dem66, я можно ссылочку?? если конечно же не затруднит вас)) видимо я здесь вообще темнота)))
SkrudjMakdak вне форума Ответить с цитированием
Старый 11.08.2011, 22:28   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от SkrudjMakdak Посмотреть сообщение
а что если не выполнился последний(даже достаточно любого после первого) запрос?? выполнять query('delete'); предыдущих записей??
А по какой причине у вас может не выполниться один или несколько логически связанных запросов?

to dem66: у него запросы UPDATE и INSERT - какой тут JOIN....???

Последний раз редактировалось Andkorol; 11.08.2011 в 22:37. Причина: wtf JOIN?
Andkorol вне форума Ответить с цитированием
Старый 11.08.2011, 22:34   #5
SkrudjMakdak
Форумчанин
 
Регистрация: 14.04.2010
Сообщений: 145
По умолчанию

конечно маловероятно, но... может сервер станет не доступным при последнем запросе))) так сказать свет отключат)))))
SkrudjMakdak вне форума Ответить с цитированием
Старый 11.08.2011, 22:35   #6
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Каковы причины не выполнения запросов?
Виталий Желтяков вне форума Ответить с цитированием
Старый 11.08.2011, 22:46   #7
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

То что вы пытаетесь сделать называется транзакция, но не все типы таблиц их поддерживают(например если работаете с mysql нужна innodb). Почитайте об этом.
Если нет возможности реализовать транзакцию, я бы написал хранимую процедуру.

Последний раз редактировалось Cronos20; 11.08.2011 в 22:49.
Cronos20 вне форума Ответить с цитированием
Старый 11.08.2011, 23:30   #8
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Цитата:
Сообщение от Виталий Желтяков Посмотреть сообщение
Каковы причины не выполнения запросов?
Таких причин может быть много, с подобными вещами мы встречаемся каждый день, например, когда на платежном терминале в дождь пишет "Ошибка связи".
motorway вне форума Ответить с цитированием
Старый 12.08.2011, 10:14   #9
mrgrudge
Форумчанин
 
Аватар для mrgrudge
 
Регистрация: 20.02.2010
Сообщений: 229
По умолчанию

Цитата:
Сообщение от SkrudjMakdak Посмотреть сообщение
а что если не выполнился последний(даже достаточно любого после первого) запрос?? выполнять query('delete'); предыдущих записей??
для этого в функции которая у вас отвечает зо обработку запросов к бд используйте mysql_insert_id() которая вернет id записи после insert'a.

По поводу нескольких записей, что-то мне подсказывает что у вас не совсем правильно устроена бд, посмотрите возможно получится некоторые таблицы и объеденить так будет несколько проще нежели для каждого запроса писать и условие и если запрос не выполнится то затрутся все только что вставленные\обновленные записи.
думай как баг, действуй как баг, и ты найдешь баг )
mrgrudge вне форума Ответить с цитированием
Старый 12.08.2011, 11:38   #10
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Ерунду говорите, делать руками откат в базе данных при добавлении большого количества записей глупо. Если проект серьезный и требует безотказной работы и стабильности, то и СУБД нужно выбирать нормальную (никак не mysql), которая на программном уровне поддерживает все это.
Cronos20 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DBGrid и несколько запросов us4us БД в Delphi 7 26.04.2011 13:16
Несколько запросов к БД artemavd БД в Delphi 8 15.09.2010 08:42
Несколько запросов в одном ADOQuery1 XKsandrX Общие вопросы Delphi 3 31.05.2010 14:28
mysql - несколько запросов (C++ Builder2010) animalshadow Общие вопросы C/C++ 0 31.03.2010 17:17
несколько запросов SQL Arteom БД в Delphi 3 09.09.2007 23:39