pylyp
Новичок
Есть XML, данные в котором меняется каждый день и каждый день надо создавать по нему новую таблицу в MySQL.
Вариант 1. Простой. Для каждого поля сделать запрос и все работает, но хочется сделать динамический запрос.
Вариант 2. Сделать динамический запрос см. внизу. Вот тут не получается.
Вопрос. Как реализовать последние 4 строчки одним запросом?
что то вроде
Это для того, чтобы в случае изменения структуры XML файла и названия полей, не надо было переписывать половину скрипта.
Тут только чать полей для примера, на самом деле их много.<?xml version="1.0" encoding="UTF-8"?>
<citizens>
<citizen>
<military-skills>
<military-skill>
<points>35.000</points>
</military-skill>
</military-skills>
<name>Group_33</name>
<id>1482987</id>
<level>14</level>
</citizen>
...
</citizens>
Вариант 1. Простой. Для каждого поля сделать запрос и все работает, но хочется сделать динамический запрос.
Вариант 2. Сделать динамический запрос см. внизу. Вот тут не получается.
PHP:
//Создаем массив полей для ввода в базу
$pole = array(
"id"=> array("INT(10) ", "id"),
"name"=> array("varchar(64) ", "name"),
"level"=> array("int(4) ", "level"),
"millskill"=> array("int(8) ", "{'military-skills'}->{'military-skill'}->points")
);
//Создаем запрос на создание полей
$sql = "";
foreach ($pole as $key=>$value) {
$sql.= ($sql!=""? "," : "" ).$key." ".$value[0];
}
$sql = "CREATE TABLE ".$datenow." (".$sql.")";
//Делаем сформированный запрос
$link2 = mysql_query ($sql) ;
//Грузим файл статистики
$xml = simplexml_load_file('people.xml');
//Считаем количество строк в массиве
$num = count ($xml->citizen);
//Заносим данные в массив
for ($i = 0; $i < $num; $i++) {
foreach ($pole as $key=>$value){
$sql_name = $xml->citizen[$i]->name;
$sql_level = $xml->citizen[$i]->level;
$sql_millskill = $xml->citizen[$i]->{'military-skills'}->{'military-skill'}->points;
mysql_query ("INSERT INTO `$datenow` (`id`, `name`, `level`, `millskill`) VALUES ('$sql_id', '$sql_name', '$sql_level', '$sql_millskill');");
}
}
что то вроде
PHP:
("INSERT INTO `$datenow` (`$key`) Values (`$xml->citizen[$i]->$value[1]`)")