За последние 24 часа нас посетили 22960 программистов и 1238 роботов. Сейчас ищут 750 программистов ...

Не удаляется временная запись

Тема в разделе "PHP и базы данных", создана пользователем ureech, 28 сен 2020.

  1. ureech

    ureech Активный пользователь

    С нами с:
    13 окт 2015
    Сообщения:
    49
    Симпатии:
    0
    Привет. Mysql. Клонирую запись в таблице,
    PHP:
    1. if(cmsCore::request('clon')){
    2.     $clon = cmsCore::request('clon');
    3.     $inDB->query("
    4.    CREATE TEMPORARY TABLE temp SELECT * FROM cms_walet WHERE id = {$clon}");
    5.     $inDB->query("UPDATE temp SET id = (SELECT id FROM cms_walet ORDER by id DESC LIMIT 1
    6.        )+1  where id = {$clon}");
    7.  
    8.     $sql = $inDB->query("INSERT INTO cms_walet
    9.    SELECT * FROM temp
    10.    ");
    11.     $inDB->query("DROP TEMPORARY TABLE IF EXISTS temp");
    12.  
    13.     }
    Запись клонируется,но в таблице остаётся ещё и пустая запись. Как поправить это дело?
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    Нда..
    Больше вопросов ...
    - зачем использовать временную таблицу?
    - неужели id не аатоинкремент уникальный?
    - зачем id+1?
    - в чем смысл клона?

    Почему не так?
    Код (Text):
    1. INSERT INTO cms_walet
    2.   (SELECT cw.* FROM cms_walet AS cw WHERE cw.id = {$clone})
     
  3. ureech

    ureech Активный пользователь

    С нами с:
    13 окт 2015
    Сообщения:
    49
    Симпатии:
    0
    Все вопросы,кроме последнего имеют место быть). В запросах не очень.Какой пример первый попался тот и решил использовать). Просто тупанул и внимательно не разобрался. Спасибо.
     
  4. ureech

    ureech Активный пользователь

    С нами с:
    13 окт 2015
    Сообщения:
    49
    Симпатии:
    0
    Не совсем тупанул.Вспомнил). Такой запрос выдаёт ошибку. Duplicate entry '1' for key 'PRIMARY' хотя id первичный и уникальный и аатоинкремент присутствует
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    Ну потому что пытается вставить с таким же id. Чтоб такого не было нужно явно перечислить все поля кроме ид, и в темноте и в селекте
     
  6. ureech

    ureech Активный пользователь

    С нами с:
    13 окт 2015
    Сообщения:
    49
    Симпатии:
    0
    Блин, в том и дело, что явно не хочется
    --- Добавлено ---
    Вопрос остаётся актуальным. Почему не удаляется временная
     
  7. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Проблема скорее всего в cms_walet.
    Скопируйте сюда её структуру.
     
  8. ureech

    ureech Активный пользователь

    С нами с:
    13 окт 2015
    Сообщения:
    49
    Симпатии:
    0
    HTML:
    1.  
    2.  
    3. CREATE TABLE `cms_walet` (
    4.   `id` int(11) NOT NULL,
    5.   `category_id` int(11) NOT NULL,
    6.   `user_id` int(11) NOT NULL,
    7.   `pubdate` date NOT NULL,
    8.   `title` varchar(200) NOT NULL,
    9.   `content` mediumtext NOT NULL,
    10.   `shop` varchar(100) NOT NULL,
    11.   `price` float(8,2) NOT NULL,
    12.   `type` varchar(11) NOT NULL,
    13.   `sum` float(6,2) NOT NULL,
    14.   `count` int(11) NOT NULL,
    15.   `valute` varchar(11) NOT NULL,
    16.   `cash` varchar(100) NOT NULL,
    17.   `file` varchar(255) NOT NULL,
    18.   `unit` varchar(11) NOT NULL,
    19.   `published` tinyint(4) NOT NULL DEFAULT '1'
    20. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    21.  
    22.  
    23.  
    24. INSERT INTO `cms_walet` (`id`, `category_id`, `user_id`, `pubdate`, `title`, `content`, `shop`, `price`, `type`, `sum`, `count`, `valute`, `cash`, `file`, `unit`, `published`) VALUES
    25. (1, 2, 1, '2020-09-30', 'Молоко', '', 'Магазин', 0.00, 'minus', 0.00, 0, 'Руб.', 'Наличные', '', 'Шт.', 1),
    26. (2, 2, 2, '2020-09-30', 'Каша', '', 'Магазин', 0.00, 'minus', 0.00, 0, 'Руб.', 'Наличные', '', 'Шт.', 1);
    27.  
    28.  
    29. ALTER TABLE `cms_walet`
    30.   ADD PRIMARY KEY (`id`),
    31.   ADD UNIQUE KEY `id` (`id`),
    32.   ADD KEY `category_id` (`category_id`),
    33.   ADD KEY `user_id` (`user_id`),
    34.   ADD KEY `id_2` (`id`);
    35.  
    36.  
    37. ALTER TABLE `cms_walet`
    38.   MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
    39. COMMIT;
    40.  
    41.  
     
  9. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Сделал следующий запрос
    Код (Text):
    1. CREATE TEMPORARY TABLE temp SELECT * FROM cms_walet WHERE id = 2;
    2. UPDATE temp SET id = (SELECT id FROM cms_walet ORDER by id DESC LIMIT 1)+1  where id = 2;
    3. INSERT INTO cms_walet SELECT * FROM temp;
    4. DROP TEMPORARY TABLE IF EXISTS temp;
    В cms_walet появилась еще одна строка.
    Таблицы temp в базе не обнаружил.
    Уточните проблему.
     
  10. ureech

    ureech Активный пользователь

    С нами с:
    13 окт 2015
    Сообщения:
    49
    Симпатии:
    0
    Да, таблица temp удаляется. Запись клонируется. Но откуда то берётся пустая строка в таблице cms_walet. Откуда?
     
  11. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    cms_wallet1.jpg cms_wallet2.jpg
    Которая из них пустая?
     
  12. ureech

    ureech Активный пользователь

    С нами с:
    13 окт 2015
    Сообщения:
    49
    Симпатии:
    0
    Да,уж.. Прямым запросом у меня тоже нет пустой.Хз тогда в чём дело. Попробую в отдельный файл вынести запрос. Может что то где то цепляется.
    --- Добавлено ---
    Блин. Спасибо большое за участие и помощь. Разобрался.После окончания кода с запросом в ajax.php не прописал exit;