За последние 24 часа нас посетили 16666 программистов и 1690 роботов. Сейчас ищут 824 программиста ...

Ошибка passed to db_update() must be of the type array, string

Тема в разделе "PHP для новичков", создана пользователем Junnior, 15 окт 2018.

  1. Junnior

    Junnior Новичок

    С нами с:
    16 авг 2018
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте, подскажите пожалуйста как решить данную проблему?
    PHP:
    1.   $result = array_diff($product_sku, array($known_skus[$sku])); // Находим артикулы, которых нет в
    2. выгрузке
    3.   foreach ($result as $key => $value) {
    4.     watchdog('custom_import', 'Снимаем с публикации. Товар с артикулом @value отсутствует в выгрузке', ['@value' => $value], WATCHDOG_DEBUG);
    5.     $status_product = db_update('commerce_product', 'r')
    6.         ->condition('r.sku', $value)
    7.         ->fields(array('r.status' => 0))
    8.         ->execute();
    9.   }
    Выводит такую ошибку passed to db_update() must be of the type array, string
     
  2. Artur_hopf

    Artur_hopf Старожил

    С нами с:
    7 май 2018
    Сообщения:
    2.264
    Симпатии:
    405
    Не надо циклом обновлять базу, засунь все в цикле в массив, а уже потом делай update. А ошибка значит что ты записываешь в таблицу то что туда нельзя записать.
     
  3. Junnior

    Junnior Новичок

    С нами с:
    16 авг 2018
    Сообщения:
    4
    Симпатии:
    0
    PHP:
    1.   $status = [];
    2.   $result = array_diff($product_sku, array($known_skus[$sku])); // Находим артикулы, которых нет в выгрузке
    3.   foreach ($result as $key => $value) {
    4.     watchdog('custom_import', 'Снимаем с публикации. Товар с артикулом @value отсутствует в выгрузке', ['@value' => $value], WATCHDOG_DEBUG);
    5.     $status[] = $value;
    6.   }
    7.   $status_product = db_update('commerce_product', 'sp')
    8.       ->condition('sp.sku', $status)
    9.       ->fields(array('sp.status' => 0))
    10.       ->execute();
    Сделал так. Не получилось.
     
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @Junnior, вторым параметром функции db_update должен быть массив, а не строка.
    Подробнее - в документации по используемой CMS (используемому инструментарию).
    Например, для drupal: function db_update