#11 2015.10.19 18:12

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Общие вопросы по SQL

что не так с результатом-то?

Неактивен

#12 2015.10.19 18:22

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Общие вопросы по SQL

Gemorroj написал:

что не так с результатом-то?

Да совсем не так. Вот нашел решение уже SELECT *, max(timestamp) maxtime FROM `messages` WHERE `user_id`=$uid GROUP BY `from_id` ORDER BY `maxtime` DESC

Неактивен

#13 2015.11.02 16:24

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Общие вопросы по SQL

Как добавить множество записей с использованием ON DUPLICATE KEY UPDATE

Неактивен

#14 2015.11.03 07:35

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Общие вопросы по SQL

TLENS написал:

Как добавить множество записей с использованием ON DUPLICATE KEY UPDATE

С этим разобрался

Код:

1
span style="color: #0000BB"><?php foreach ($arrayData as $data) { $id = $data['id']; $title = $this->_mysqli->real_escape_string($data['title']); $description = $this->_mysqli->real_escape_string($data['description']); $duration = $data['duration']; $img = $data['img']; $errno = (int)$data['errno']; $data = $this->_mysqli->real_escape_string(serialize($data['data'])); $values[] = "('$id', '$title', '$description', $duration, '$img', $errno, {$_SERVER['REQUEST_TIME']}, '$data')"; } $insert .= 'VALUES '. implode (",\n", $values) . "\n" . "ON DUPLICATE KEY UPDATE\n" . "`title` = VALUES(`title`),\n" . "`description` = VALUES(`description`),\n" . "`img` = VALUES(`img`),\n" . "`errno` = VALUES(`errno`),\n" . "`expire` = VALUES(`expire`),\n" . "`data`= VALUES(`data`)\n"; $result = $this->_mysqli->query($insert);

Но теперь другая проблема. Допустим если при обновлении в одного из записей values пустое поле `data` то как мне оставить старое значение а не обновлять поле в null?

Неактивен

#15 2015.11.03 08:32

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Общие вопросы по SQL

Разобрался по моему все работает как надо

Код:

1
span style="color: #0000BB"><?php $insert = "INSERT INTO `$this->_INFO_TABLE_NAME` " . "(`id`, `title`, `description`, `duration`, `img`, `errno`, `expire`, `data`)\n"; $values = []; foreach ($arrayData as $data) { $id = "'{$data['id']}'"; $title = "'" .$this->_mysqli->real_escape_string($data['title']) . "'"; $description = "'" . $this->_mysqli->real_escape_string($data['description']) . "'"; $duration = $data['duration']; $img = "'" . $data['img'] . "'"; $errno = (int)$data['errno']; $otherData = $data['data'] ? "'".$this->_mysqli->real_escape_string(serialize($data['data']))."'" : "''"; $values[] = "($id, $title, $description, $duration, $img, $errno, {$_SERVER['REQUEST_TIME']}, $otherData)"; } $insert .= 'VALUES '. implode (",\n", $values) . "\n" . "ON DUPLICATE KEY UPDATE\n" . "`title` = COALESCE(NULLIF(title, ''), VALUES(title)),\n" . "`description` = COALESCE(NULLIF(description, ''), VALUES(description)),\n" . "`img` = COALESCE(NULLIF(img, ''), VALUES(img)),\n" . "`errno` = VALUES(errno),\n" . "`expire` = VALUES(expire),\n" . "`data`= COALESCE(NULLIF(data, ''), VALUES(data))\n"; $result = $this->_mysqli->query($insert); var_dump($result); var_dump($this->_mysqli->error); echo $insert;

Неактивен

#16 2024.01.17 17:32

Ardenlarove
Участник
Зарегистрирован: 2024.01.14
Сообщений: 1
Карма: 0
Профиль Веб-сайт

Re: Общие вопросы по SQL

Сталкивались ли вы с ситуациями, когда при использовании предложения ON DUPLICATE KEY UPDATE в SQL вам нужно было сохранить существующее значение поля (данных), если новое значение пусто, и если да, то как вы решили эту проблему в своем коде?

Отредактировано Ardenlarove (2024.01.20 17:37)


smile

Неактивен

#17 2024.01.17 17:48

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Общие вопросы по SQL

я не очень понимаю, как должен сработать duplicate, если данные различаются?

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.009 s