Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Объеденить несколько UPDATE
Покинул форум
Сообщений всего: 117
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
Здравствуйте. Имеются 3 запроса у которых WHERE один и тот же.
$psql4 = "UPDATE node SET `title`='%s', `show`='%s' WHERE nid='%s'";
$psql5 = "UPDATE field_data_body SET `body_value`='%s' WHERE nid='%s'";
$psql7 = "UPDATE field_data_category SET `category_id`='%s' WHERE nid='%s'";
Могу объединить с помощью UNION но думаю есть более грациозная реализация
Спасибо
teddy
Отправлено: 04 Ноября, 2013 - 17:20:33
Участник
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
Если нужно обновить одним запросом три таблицы, тогда можно использовать multi_query, который нам предлагает MySQLi
Только буква p в начале каждой переменной насторожила.. если вы используете PostgreSQL
тогда вот пример из мануала, в принципе одно и то же http://us2.php.net/manual/ru/fun...ion.pg-query.php (Добавление)
Если нужно использовать один раз ключевое слово WHERE, то можно ещё так:
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
zzzzzz пишет:
Правильно ли это?
Не думаю. Если у вас одинаковые значения, зачем трижды вызывать эту функцию и создавать разные переменные? Достаточно создать 1 переменную и положить в нее то значение, которое везде одинаковое и в запрос уже в 3 местах подставлять эту переменную.
zzzzzz
Отправлено: 04 Ноября, 2013 - 18:03:03
Гость
Покинул форум
Сообщений всего: 117
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
функцию вызываю один раз, но как вы видите после WHERE в запросе стоят три маркера у которых одинаковое значение, соответственно эти маркеры я должен заполнить и получается так
sprintf(..., $nid, $nid, $nid)
teddy
Отправлено: 04 Ноября, 2013 - 18:18:22
Участник
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
Если полученная строка устраивает вас как результат, то можно и даже нужно для корректного апдейта данных.
zzzzzz
Отправлено: 04 Ноября, 2013 - 18:29:16
Гость
Покинул форум
Сообщений всего: 117
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
Устраивает полностью, спасибо
deblogger
Отправлено: 05 Ноября, 2013 - 04:34:09
Новичок
Покинул форум
Сообщений всего: 59
Дата рег-ции: Нояб. 2013
Помог: 0 раз(а)
[+]
zzzzzz пишет:
есть более грациозная реализация
Есть. Переделать бд так, чтобы не пришлось писать 3 одинаковых значения в три разные таблицы.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.