• Главная
  • » SQL
  • » Как добавить одним запросом кучу записей + редактировать существующие?

#1 2014.11.15 22:56

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

Как добавить одним запросом кучу записей + редактировать существующие?

Есть список данных которые нужно залить в базу данных.
Как сделать это одним запросом. Но при наличии существующией просто обновить ее?

Неактивен

#2 2014.11.15 23:24

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

Re: Как добавить одним запросом кучу записей + редактировать существующие?

Пока что обойдусь таким костылем

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
        
        $video_sql = []; 
        $id_sql_select = [];
        $timestamp time();
        
        foreach ($videos as $video) {
            $id_sql_select[] = "'{$video['id']}'";
            
            $description $db->real_escape_string($video['description']);
            $title $db->real_escape_string($video['title']);
            
            
            $video_sql[$video['id']] = "('{$video['id']}', \"$title\", \"$description\", 1, "
                "{$video['duration']}$timestamp)";
        }
        
        $q_select "SELECT `id` FROM `$this->_tableName` WHERE `id` IN (".implode(', '$id_sql_select) . ")";
        if ($r $db->query($q_select)) {
            while($row $r->fetch_assoc())
                unset($video_sql[$row['id']]);
        }
        
        if (sizeof($video_sql)) {
            $q "INSERT INTO `$this->_tableName` (`id`, `title`, `description`, `description_mini`, `duration`, `timestamp`)\n"
                    "VALUES "implode(",\n"$video_sql);
            if (!$db->query($q)) {
                echo $db->error;
                return false;
            }
        }

Неактивен

#3 2014.11.16 01:52

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

Re: Как добавить одним запросом кучу записей + редактировать существующие?

Есть REPLACE команда..)

Неактивен

#4 2015.07.02 21:50

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

Re: Как добавить одним запросом кучу записей + редактировать существующие?

Gemorroj написал:

Есть REPLACE команда..)

А что если юзать insert into on duplicate key update?
Как по мне он более гибкий

Неактивен

#5 2015.07.04 10:57

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

Re: Как добавить одним запросом кучу записей + редактировать существующие?

ну можешь и его. replace проще просто

Неактивен

  • Главная
  • » SQL
  • » Как добавить одним запросом кучу записей + редактировать существующие?

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

forum.wapinet.ru

PunBB Mod v0.6.2
0.009 s