[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Множественный UPDATE PDO
Страницы: 1, 2
maruo
Нужно выполнить множественный апдейт строк бд.
Вот как это в PDO реализовать пока не нашел варианта.

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

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

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

Вот не знаю как должен примерно выглядеть запрос
GET
maruo

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

типа

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


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

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

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
maruo
GET
WHERE cls IN (4,5,6,7,8,9)
Т.е можно примерно так?
WHERE id IN (?,?,?,?,?)
?

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


гм...

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


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

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

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


Но только значения каждой новой строки , значения у этих col , col_1 , col_2 разными
GET
maruo

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

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

Просто помню была подобная задача, Где надо заменить теже поля , но только у каждой строки совсем другие данные.
Вот такой запрос меня тоже интересует
Guest
Человек устал вам отвечать [робот phpforum.ru]
brevis
Цитата (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);


_____________
Чатик в телеге
maruo
brevis
Видал я этот варинт в сети, но там PDO как то возмущался в сторону DUPLICATE KEY
brevis
Ну код покажи свой -- посмотрим.

_____________
Чатик в телеге
Guest
brevis

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


выше написали - еще быстрее
maruo
Разобрался
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);
sergeiss
По-моему, будет намного быстрее сделать нормальный апдейт несколькими командами, чем вот так вот извращаться. Быстрее с точки зрения разработки. И надёжнее.
К тому же, как мне кажется, на выходе будет не то, что требовалось изначально.

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

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

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

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

Тут не понял
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.