За последние 24 часа нас посетили 15272 программиста и 1671 робот. Сейчас ищут 859 программистов ...

Помогите с командой UPDATE

Тема в разделе "PHP и базы данных", создана пользователем 4ackLi, 9 дек 2015.

  1. 4ackLi

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

    С нами с:
    8 сен 2015
    Сообщения:
    2
    Симпатии:
    0
    Всем доброго времени суток!!!

    Я только начинаю изучать php MySQL, не могу разобраться с командой.

    Вставил адрес изображения в ячейку в phpMyAdmin, получил такую строку:
    Код (PHP):
    1. UPDATE `author_db`.`books` SET `books_img` = '/img/The_Vor_Game.jpg' WHERE `books`.`id_books` = 10; 
    В соответствии с ней хотел заполнить остальные ячейки одной командой, перечисляя номера id, начал с одной и не получается. Воспользовался поиском, повесу похоже все правильно, но mysql ругается.
    Код (PHP):
    1. ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id_books=10' at line 1
    В чем я ошибся?
    Код (PHP):
    1. UPDATE books SET books_img ='/img/The_Vor_Game.jpg' WHERE books id_books=10; 
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    А вы не видите отличия между тем запросом, что сделали сами и тем, что PMA вам выдал? Приглядитесь внимательнее, чтоли. На месте ли все обратные кавычки, все точки...
     
  3. 4ackLi

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

    С нами с:
    8 сен 2015
    Сообщения:
    2
    Симпатии:
    0
    Если честно, не рассчитывал на результат, но это первое, что я сделал, набрал этот код.
    НАДО БЫЛО СКОПИРОВАТЬ И ВСТАВИТЬ!!!
    Из того что я читал, он не выглядел синтаксически правильным запросом, к примеру:

    Fell-x27,сори за беспокойство.

    Как правильно будет выглядеть команда если добавить по id во все строки? Такое возможно?
    На перечисление через запятую ругается:
    Код (PHP):
    1. UPDATE `author_db`.`books` SET `books_img` = '/img/The_Warrior’s_Apprentice.jpg' WHERE `books`.`id_books` = 14,9,20; 
    Fell-x27, спасибо!!!

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Возможно. Но гляди, значение будет для них одно и то же.
    Но писать надо не
    Код (PHP):
    1. WHERE `books`.`id_books` = 14,9,20;  
    А
    Код (PHP):
    1. WHERE `books`.`id_books` in (14,9,20);  
    .

    Если нужно разные значения для разных ID, то тогда в цикле генерируй отдельные запросы для каждого объекта.
     
  5. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    в общем случае верно, но в MySQL есть трюк чтобы апдейтить несколько строк: через INSERT ON DUPLICATE KEY UPDATE
    команда сначала пытается вставить строку, но если указанный id уже существует, то для этой строки выполняется "запасной вариант" — обновление. так можно одним запросом изменить несколько строк.

    Добавлено спустя 7 минут 17 секунд:
    Код (PHP):
    1. INSERT INTO `author_db`.`books`(`id`, `books_img`) VALUES
    2.   (14, '/img/alfa.jpg'),
    3.   (9, '/img/beta.jpg'),
    4.   (20, '/img/gamma.jpg')
    5. ON DUPLICATE KEY UPDATE
    6.   `books_img` = VALUES(`books_img`) 
    в последней строке VALUES(имя колонки) — это способ сослаться на значение, упомянутое выше в части insert
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    можно подробнее, зачем это?
     
  7. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    чтобы использовать значение из первой части INSERT где прописаны новые значения и не дублировать их во второй части запроса. Удобно.
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Век живи, век учись, спасибо.