За последние 24 часа нас посетили 59132 программиста и 1810 роботов. Сейчас ищут 2453 программиста ...

Помогите разобраться

Тема в разделе "Прочие вопросы по PHP", создана пользователем lumpi, 3 июн 2015.

  1. lumpi

    lumpi Новичок

    С нами с:
    3 июн 2015
    Сообщения:
    4
    Симпатии:
    0
    Есть такой кусок кода:
    $sql = 'INSERT INTO `?#CATEGORIY_PRODUCT_TABLE` SET `categoryID` =?, `productID` =?@';
    db_phquery($sql,$categoryID,$m_productID);
    Т.е. данный запрос вставляет в таблицу SQL значения `categoryID` =? и `productID` =?@'
    Вот здесь и возникает вопрос.
    `categoryID` =? - имеет всегда 1 значение
    `productID` =?@' - может содержать от 1 до нескольких (например 10), которые идут так:(пример): 22,33,44,55
    если `productID` =?@' содержит 1 значения, конструкция срабатывает нормально, но если нет, то выбивает ошибку,
    т.к. SQL понимает только вставку по одному значению. На форуме SQL толком ничего сказать не могут. Значит я спрошу у гуру PHP. Так вот. Как мне переделать запрос указанный выше, чтоб выражение было (грубо говоря):

    $sql = 'INSERT INTO `?#CATEGORIY_PRODUCT_TABLE` SET `categoryID` ="Значение постоянное", `productID` ="значение1";"
    и т.д., пока в `productID` =?@' не закончатся значения.
     
  2. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    все расписали, но нет ошибки которая выводится на экран. И код который обрабатывает данный запрос.
     
  3. lumpi

    lumpi Новичок

    С нами с:
    3 июн 2015
    Сообщения:
    4
    Симпатии:
    0
    вот ошибка
    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 ''1634'' at line 1
    при коде:
    INSERT INTO `SC_category_product` SET `categoryID` =555, `productID` ='1633','1634'
    т.е. второе значение и дальше SQL не берет

    сам код переменной:
    function move_selected_products(){
    if(isset($_POST['categoryID'])){
    $categoryID = intval($_POST['categoryID']);
    $current_categoryID = isset($_GET['categoryID'])?intval($_GET['categoryID']):false;
    $m_productID = array_keys(scanArrayKeysForID($this->getData(), 'selected_product'));
    $m_productID = array_map('intval',$m_productID);
    $m_productID = array_unique($m_productID);
    if(count($m_productID)){
    if($current_categoryID) {
    $sql = 'INSERT INTO `?#CATEGORIY_PRODUCT_TABLE` SET `categoryID` =?, `productID` =?@';
    db_phquery($sql,$categoryID,$m_productID);


    } else {

    $sql = 'INSERT INTO `?#CATEGORIY_PRODUCT_TABLE` SET `categoryID` =? WHERE `productID` IN (?@)';
    db_phquery($sql,$categoryID,$m_productID);


    $sql = 'INSERT IGNORE INTO `?#CATEGORIY_PRODUCT_TABLE` (`productID`,`categoryID`) VALUES (?,?)';
    foreach($m_productID as $productID) {
    db_phquery($sql,$productID,$categoryID);
    }
    /* INSERT INTO `mi`.`sc_category_product` (`productID`, `categoryID`) VALUES ('1243', '123');*/

    }
    }
    }

    Добавлено спустя 50 секунд:
    смотрите все до {else}
     
  4. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Так а с какой радости "ему это брать". Если вы вот это пишите: `productID` ='1633','1634'
    Что вы от СУБД хотите? два значения в одно поле записать? Так не получится сделать.
     
  5. lumpi

    lumpi Новичок

    С нами с:
    3 июн 2015
    Сообщения:
    4
    Симпатии:
    0
    Я пониайт, мне надо цикл организовать. А как?
     
  6. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Автор, попробуй в теги. У меня в подписи ссылка, покури ее основательно.
     
  7. lumpi

    lumpi Новичок

    С нами с:
    3 июн 2015
    Сообщения:
    4
    Симпатии:
    0
    Мне просто необходимо организовать цикл, чтоб в SQL отправлялось по 1-му значению. Откуда они берутся - не важно. Главное как ими дальше распорядится. Мне кажется алгоритм таков. Есть 2 переменные (А и Б). Значение (примерно) А=1, Б=1,2,3 (может Б=1 или Б=1,2,3,4).
    Берем переменную Н. Н = количество значений Б (которые идут через запятую)
    Переменная И = 1
    Цикл пока И <= Н
    если ТАБЛИЦА (А,Б) <> А, Б (И) тогда
    вставка значения в ТАБЛИЦУ (А,Б) = А, Б(И)
    конец если
    И = И + 1
    конец цикла