За последние 24 часа нас посетили 17780 программистов и 1622 робота. Сейчас ищут 1855 программистов ...

Комбинированный SELECT & Updare запрос.

Тема в разделе "PHP и базы данных", создана пользователем 68pin, 18 янв 2018.

  1. 68pin

    68pin Новичок

    С нами с:
    12 май 2015
    Сообщения:
    12
    Симпатии:
    0
    Исходные данные.
    Таблица - table
    Поля - name, imgname, link

    В таблице table большое колличество записей. (более1000)
    В полях name и imgname содержаться записи. В поле link - пусто.
    Задача. Сформировать PHP запрос, на добавление в поле link данных типа ссылки на страницу сайта.(www.myweb.ru)
    Ссылка должна иметь вид типа http://myweb.ru/index.php?option=com_rsform&formId=4&myparameter1=NAME&myparameter2=IMGNAME
    где NAME - данные из поля name. IMGNAME - данные из поля imgname.

    У самого получается только добавлять поля и выдергивать данные. А вот как объединить два запроса Select и Update в один, не получается.
    Помогите чайнику.
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    у тебя база как матрёшка, бро! :D
    --- Добавлено ---
    Сдаётся мне, что ты спрашиваешь про INSERT, а в заголовке и тексте почему-то UPDATE. Следи за словами, у тебя все термины вперемешку. Человек, не умеющий сформулировать вопрос, не сможет программировать.

    Для добавления записей есть такая конструкция INSERT… SELECT…
    https://dev.mysql.com/doc/refman/5.7/en/insert-select.html
     
  3. 68pin

    68pin Новичок

    С нами с:
    12 май 2015
    Сообщения:
    12
    Симпатии:
    0
    Меня не интересует добавление новых строк. Меня интересует вставка в поле link, данных из полей name и imgname, той же записи (строки). Причем они должны быть объединены в http://myweb.ru/index.php?option=com_rsform&formId=4&myparameter1=NAME&myparameter2=IMGNAME
    где NAME - данные из поля name. IMGNAME - данные из поля imgname.
    --- Добавлено ---
    Может я неправильно сформулировал.
    Необходимо взять данные из полей name и imgname, объеденить их в "http://myweb.ru/index.php?option=com_rsform&formId=4&myparameter1=NAME&myparameter2=IMGNAME" и это "объединение" записать в поле link, этой же записи.
     
  4. 68pin

    68pin Новичок

    С нами с:
    12 май 2015
    Сообщения:
    12
    Симпатии:
    0
  5. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    Код (Text):
    1. update `table` set `link` = concat('http://myweb.ru/index.php?option=com_rsform&formId=4&myparameter1=',`name`,'&myparameter2=',`imgname`);
    Но лучше этого не делать, а собирать готовую ссылку при подготовке данных для формы, на которой эта ссылка будет отображена.
     
    68pin нравится это.
  6. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @68pin, где-то я уже видел этот вопрос... и дал ответ.
    Однако, не надо дублировать темы на одном форуме.
    @68pin, разделы - для удобства поиска ответов, а не для того, чтобы в каждом подходящем, или не очень дублировать сообщения...
     
    68pin нравится это.
  7. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.861
    Симпатии:
    751
    Адрес:
    Татарстан
    Код (Text):
    1. UPDATE table SET link = CONCAT('http://myweb.ru/index.php?option=com_rsform&formId=4&myparameter1=',name,'&myparameter2=',imgname)
     
    68pin и artoodetoo нравится это.
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    @68pin учимся говорить и думать правильно:

    "запись" (record) это то же, что строка. таблица состоит из множества строк-записей
    "поле" (field) это поле :) поле ≠ запись. каждая строка таблицы состоит из одинакового набора полей.
    "вставить" (insert) значит добавить запись(-си) в таблицу. записей станет больше.
    "изменить" (update) ≠ вставить. это значит что в одной или нескольких записях поменяется значение полей. количество записей не меняется.

    Выше ADSoft дал правильную команду. Будут изменены все записи таблицы (раз нет условия WHERE).
    В MySQL нет оператора аналогичного "." в PHP — для склейки строк нужна функция concat().
     
    68pin нравится это.
  9. 68pin

    68pin Новичок

    С нами с:
    12 май 2015
    Сообщения:
    12
    Симпатии:
    0
    Всем спасибо. Тема закрыта. Помощь AdSoft помогла. И за разьяснение спасибо. PHP.ru Рулит