Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Множественный UPDATE PDO
maruo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 326
Пользователь №: 37433
На форуме: 3 года, 8 месяцев, 8 дней
Карма: 1




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

Должно быть так.

Выбрал нужные строки, через php заменил данные.
Теперь нужно сохранить 1м запросом.

UPDATE tbl SET col = ? , col_2 = ?, col_3 = ? WHERE cls = ?

Вот не знаю как должен примерно выглядеть запрос
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3883
Пользователь №: 21196
На форуме: 6 лет, 10 месяцев, 19 дней
Карма: 87




maruo

Так можно сделать если только параметры смены полей одинаковые:

типа

UPDATE tbl SET col = 1 , col_2 = 2, col_3 = 3 WHERE cls  IN (4,5,6,7,8,9)


т.е. всем присвоятся новые значения , а как еще?

Можно там обыграть через смесь UPDATE/INSERT - REPLACE, но это не айс.


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maruo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 326
Пользователь №: 37433
На форуме: 3 года, 8 месяцев, 8 дней
Карма: 1




GET
WHERE cls IN (4,5,6,7,8,9)
Т.е можно примерно так?
WHERE id IN (?,?,?,?,?)
?

Получается заменятся поля где id равны то что в скобках??
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3883
Пользователь №: 21196
На форуме: 6 лет, 10 месяцев, 19 дней
Карма: 87




Цитата
Получается заменятся поля где id равны то что в скобках??


гм...

ну при
WHERE id  IN (4,5,6,7,8,9)


у строк с id=4 и id=5 и id=6 и id=7 и id=8 и id=9

Станут одмнаковые поля указанные вами в SET


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maruo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 326
Пользователь №: 37433
На форуме: 3 года, 8 месяцев, 8 дней
Карма: 1




GET, Это то что надо в принципе.
А если например, я хочу для каждой строки разные данные?
Ну имею ввиду также
 SET col = 1 , col_2 = 2, col_3 = 3


Но только значения каждой новой строки , значения у этих col , col_1 , col_2 разными
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3883
Пользователь №: 21196
На форуме: 6 лет, 10 месяцев, 19 дней
Карма: 87




maruo

Ну, естественно, мне кажется, каждой строке указать надо какие конкретно данные ей надо менять.


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maruo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 326
Пользователь №: 37433
На форуме: 3 года, 8 месяцев, 8 дней
Карма: 1




GET
Ну судя по этому запросу, то данные будут для каждой строки одинаковые.
Это по сути то что мне надо.

Просто помню была подобная задача, Где надо заменить теже поля , но только у каждой строки совсем другие данные.
Вот такой запрос меня тоже интересует
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Человек устал вам отвечать [робот phpforum.ru]
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
brevis  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 294
Пользователь №: 39616
На форуме: 2 года, 8 месяцев, 8 дней
Карма: 33




Цитата (maruo @ 22.08.2016 - 11:59)
Теперь нужно сохранить 1м запросом.

Аум!

INSERT INTO `table` 
(cls, col, col2, col3)
VALUES
(1, 1, 1, 1),
(
2, 2, 2, 2),
(
3, 3, 3, 3),
(
4, 4, 4, 4)
ON DUPLICATE KEY UPDATE
col = VALUES(col),
col2 = VALUES(col2),
col3 = VALUES(col3);


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maruo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 326
Пользователь №: 37433
На форуме: 3 года, 8 месяцев, 8 дней
Карма: 1




brevis
Видал я этот варинт в сети, но там PDO как то возмущался в сторону DUPLICATE KEY
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
brevis  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 294
Пользователь №: 39616
На форуме: 2 года, 8 месяцев, 8 дней
Карма: 33




Ну код покажи свой -- посмотрим.


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









brevis

Цитата
Можно там обыграть через смесь UPDATE/INSERT - REPLACE, но это не айс.


выше написали - еще быстрее
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maruo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 326
Пользователь №: 37433
На форуме: 3 года, 8 месяцев, 8 дней
Карма: 1




Разобрался
foreach ($data as $key => $value) {
$val[] = $key;
foreach ($value as $k => $v) {
$val[] = $v;
}
$cols .= '(?,?,?,?,?,?,?,?),';
}
print_r($val);
$cols = substr($cols, 0, -1);
$sql = "INSERT INTO users_base
(id,name_user, login_user, password_user, balance_user, mail_user, number_user, status_number)
VALUES

{$cols}
ON DUPLICATE KEY UPDATE
id = VALUES(id),
name_user = VALUES(name_user),
login_user = VALUES(login_user),
password_user = VALUES(password_user),
balance_user = VALUES(balance_user),
mail_user = VALUES(mail_user),
number_user = VALUES(number_user),
status_number = VALUES(status_number);
"
;
self::$PDO->Insert($sql,$val);
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 15114
Пользователь №: 4190
На форуме: 8 лет, 11 месяцев, 16 дней
Карма: 448




По-моему, будет намного быстрее сделать нормальный апдейт несколькими командами, чем вот так вот извращаться. Быстрее с точки зрения разработки. И надёжнее.
К тому же, как мне кажется, на выходе будет не то, что требовалось изначально.

Это сообщение отредактировал sergeiss - 26.09.2016 - 23:23


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maruo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 326
Пользователь №: 37433
На форуме: 3 года, 8 месяцев, 8 дней
Карма: 1




sergeiss, что имеете под нормальным апдейтом?
Query_builder?
Цитата
К тому же, как мне кажется, на выходе будет не то, что требовалось изначально.

Тут не понял
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса