За последние 24 часа нас посетили 19199 программистов и 1642 робота. Сейчас ищут 934 программиста ...

Нужна помощь в составлении запроса

Тема в разделе "MySQL", создана пользователем AccessDenied, 16 дек 2013.

  1. AccessDenied

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

    С нами с:
    27 янв 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Беларусь
    Имеется многомерный массив, который рекурсивно достается из xml, выглядит примерно так
    xml[table_name][table_field][field_value].
    Нужно добавить в таблицу с именем table_name новую строку с ячейками table_field и их значениями field_value.
    Если такая запись имеется, то сделать update, если нет, то добавить. Я уже несколько часов мучаюсь, ничего не выходит, использую mysqli ооп.
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    57 сообщений, а до сих пор не знаешь, что тут принято приводить свой код, показывать, что именно не получается. Нужно сделать наглядно так, чтобы не сложно было разобраться.
     
  3. AccessDenied

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

    С нами с:
    27 янв 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Беларусь
    Код (PHP):
    1.     $dom = new DOMDocument('1.0', 'UTF-8');
    2.     $dom->load('1.xml');
    3.     $main = $dom->documentElement; // Корень
    4.     $nodelist = $main->childNodes; // Дочерние узлов корня
    5.     $cl = $nodelist->length; // Количество узлов в корне (таблиц)
    6.  
    7.     for ($i=0; $i < $cl; $i++) { // Цикл перебора дочерних узлов корня (таблиц)
    8.         $child = $nodelist->item($i); // Узлы (таблицы)
    9.         $c_nList = $child->childNodes; // Дочерние элементы предыдущих узлов (таблиц)
    10.         $l_cnL = $c_nList->length; // Количество элементов каждого узла (таблиц)
    11.  
    12.         for ($s=0; $s < $l_cnL; $s++) { // Цикл перебора дочерних элементов таблиц
    13.             $line = $c_nList->item($s); // Получаем строки
    14.             $att_c_line = $line->attributes->length; // Количество свойств для каждой строки
    15.  
    16.             for ($q=0; $q < $att_c_line; $q++) { 
    17.                 $att = $line->attributes->item($q); // Получаем атрибуты
    18.                 $att_p[$att->nodeName] = $att->nodeValue; // Создаем массив с ключем в качестве имени свойства и значением в качестве значения же
    19.  
    20.             } // Конец третьего цикла
    21.         } // Конец второго цикла
    22.     } // Конец первого цикла   
    Это код для парсинга xml, он неправильный, сейчас переписываю, а когда для записи в бд вообще нет, ибо я не могу понять, как его сделать.