Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 3

Parser XML в таблицу MySQL

29.03.2013, 18:07. Показов 4728. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, всем.

Буду благодарен любой помощи в решении проблемы:
суть проста, использую классический XML-парсер для получения данных из XML.
Разбор проходит на ура, но только на экран. Хочу занести полученные данные в таблицы, для дальнейшей обработки,
но INSERT INTO наотрез отказывается выполнятся...

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
include_once ('_variables.php');            // Подгружаем переменные
$depth = "0000000";
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 0); // Регистр - как в оригинале
 
function startElement($parser, $name, $attrs) {
    global $depth;                  // Рабочий Код
    if (substr_count($name, "PersAcc")>0) { 
        $depth = $attrs["kod_ls"];      // Запоминаем код 
        $data_n = "INSERT INTO 'PersAcc' (";    // Поля имен
        $data_v = " VALUES (";          // Поля значений
        foreach ($attrs as $attr => $value) {
            $data_n .= "'$attr', ";
            $data_v .= "'$value', ";
        }
        $data_n = substr($data_n, 0, strlen($data_n)-2);    // Удаляем лишнюю запятую и пробел
        $data_v = substr($data_v, 0, strlen($data_v)-2);    // Удаляем лишнюю запятую и пробел
 
// Преобразуем строку аттрибутов в UTF-8 если исходный XML-файл в кодировке Win1251   //
        $data_n = mb_convert_encoding ($data_n ,"UTF-8" , "Windows-1251" );
//======================================================================================//
        $result = mysql_query ("$data_n ) $data_v )");
    }
}
 
function endElement($parser, $name) {
    global $depth;
 
    if (substr_count($name, "PersAcc")>0) { 
        $depth = "0000000";         // Сбрасываем код 
    }
}
 
$link = mysql_connect($host, $user, $pass)  // Соединение с MySQL 
   or die ("Невозможно подключиться к MySQL"); 
 
mysql_select_db ($db_name)                  // Выбор базы данных 
   or die ("Невозможно выбрать БД: $db_name"); 
 
 
// Читаем данные из файла...
if (!($fp = fopen($file, "r"))) 
    die("Невозможно открыть XML файл");
 
while ($data = fgets($fp)) 
{
    if (!xml_parse($xml_parser, $data, feof($fp))) 
    {
        echo "<br>XML Error: ".xml_error_string(xml_get_error_code($xml_parser));
        echo " at line ".xml_get_current_line_number($xml_parser);
        break;
    }
}
xml_parser_free($xml_parser);   // Разбор файла обновлений ЗАКОНЧЕН
 
 
?>
результирующая строка запроса визуально идеально сформирована, но не работает...
PS: строки 22, 23 - я воткнул уже от безысходности, думал что может кодировка не та... (всё равно не работает)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.03.2013, 18:07
Ответы с готовыми решениями:

XML Parser
Здравствуйте! есть xml-файл с таким содержанием &lt;shop&gt; &lt;category name=&quot;for_mum&quot;&gt; &lt;good&gt;веник&lt;/good&gt; ...

XML Parser
Разбираюсь с open source проектом http://conv-net.sourceforge.net/doc/index.html свёрточная нейронная сеть вот, в котором в свою очередь...

XML DOM parser
Надо из XML файла,определить курс гонконского доллара к рублю. http://www.cbr.ru/scripts/XML_daily.asp. Я смог получить все данные,а как...

4
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
30.03.2013, 02:03
PHP
1
$result = mysql_query ("$data_n ) $data_v )") or die(mysql_error());
ошибок не выдаёт?
0
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 3
30.03.2013, 09:44  [ТС]
выдаёт, "...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 ''PersAcc' ('AddressCity', 'AddressDistrict', 'AddressFlat', 'FlatAbbr', 'Address' at line 1

Это 1064, спектр ситуаций по ней - море...
для уменьшения спектра вопросов : Apache-2.4.4, PHP-5.4.13, MySQL-5.5.30 (OpenServer 4.8.4)
пробовал генерить запрос в PHPMyAdmin - по данным таблицы - работает идеально. Строка в запросе на 100% такая-же как и формируемая в скрипте (визуально, байт - в байт). Сама таблица в базе создана по именам атрибутов в XML-файле отдельным запросом.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
30.03.2013, 12:37
Цитата Сообщение от Stynil Посмотреть сообщение
''PersAcc' ('AddressCity',
да не может такая строка сработать.
у вас имена таблицы и полей в апострофах.
всё что в 'апострофах' и кавычках - строка. 'строка' != `имени`
имена должны быть в `обратных апострофах`
1
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 3
30.03.2013, 12:51  [ТС]
Всё, разобрался:
В запросе, при сборке строки, необходимо экранировать имена полей обратной одинарной кавычкой, а значения полей - прямой одинарной кавычкой.
В моём случае должно быть так:
PHP
1
2
3
4
5
6
        $data_n = "INSERT INTO `PersAcc` (";    // Поля имен
        $data_v = " VALUES (";          // Поля значений
        foreach ($attrs as $attr => $value) {
            $data_n .= "`$attr`, ";
            $data_v .= "'$value', ";
        }
Спасибо всем, кто стремился мне помочь.

Добавлено через 9 минут
DrobyshevAlex , Вы меня опередили буквально на несколько минут, пока я писал ответ, но всё равно СПАСИБО.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.03.2013, 12:51
Помогаю со студенческими работами здесь

JavaScript parser xml
Добрый день, помогите пожалуйста пропарсить данные и разобраться как это все работает. Задача: Есть запрос который возвращает...

Xml Parser + Lotus Script
Доброго времени суток!! Возникла такая задачка. Хml перегнать в txt, и просто работать с xml (тоесть вынать инфу) возможно ли такое...

Ошибка с XML::RSS::Parser
Здравствуйте! Пишу так:my $url = 'http://www.url.to.rss.xml'; my $p = XML::RSS::Parser-&gt;new; my $feed = $p-&gt;parse_uri($url); my...

Parser XML + RecyclerView + Fragments
3 вопроса. Вопрос по XML парсингу. Подскажите как сделать выборку парсера по номеру &lt;categoryId&gt;6&lt;/categoryId&gt;? (парсится...

Eclipse: Error registering XML parser services.
Переставив winXP, Eclipse3.2 не хоче гризися, з Eclipse2.1 все ОК. Потрібна допомога! Використання 2.1 не підходить(викорисьовую плагіни...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru