@lamer228

Добавление таблиц и данных в базу данных из json php?

Всем привет!
Снова вопрос от нуба...

Как сделать импорт таблиц и данных в бд из json на php?

Например, из такого json:
{
	"tables":{
		"table1":{
			"columns":{
				"column1":"INT(11) AUTO_INCREMENT",
				"column2":"VARCHAR(255)","column3":"TEXT(14)"
			},
		"mods":[
			"PRIMARY KEY (`1`)"
		]
	},
	"table2":{
		"columns":{
			"column1":"INT(11) AUTO_INCREMENT",
			"column2":"INT(11)"
			}
		}
	}
}

Нужно получить и отправить в mysql это:
CREATE TABLE `one` (`1` INT(11) AUTO_INCREMENT, `2` VARCHAR(255), `3` TEXT(10), PRIMARY KEY (`1`));
CREATE TABLE `two` (`1` INT(11) AUTO_INCREMENT, `2` INT(11), ));


Или из такого:
{
	"data":{
		"table1":{
			"column":[
				"column2","column3"
			],
			"data":[
				["Text","Some more text"],
				["Text","Another text.."]
			]
		},
		"table2":{
			"column":[
				"column2"
			],
			"data":[
				"4566"
			]
		}
	}
}

Получить это:
INSERT INTO `table1` (`column2`, `column3`) VALUES ('Text', 'Some more text');
INSERT INTO `table2` (`column2`) VALUES (4566);


Дайте пример, пожалуйста :)
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
xISRAPILx
@xISRAPILx
Кратко не получится
Даю пример с созданием таблиц, код накинул за 5 минут. Нет никаких сложных конструкций, только основы.
function createTableFromJson(array $json){
    $result = "";
    
    if(isset($json["tables"])){
        foreach($json["tables"] as $tableName => $data){
            $result .= "CREATE TABLE `".$tableName."`";
            
            if(isset($data["columns"]) && count($data["columns"]) >= 1){
                $result .= " (";
                $columnDefinations = [];
                foreach($data["columns"] as $columnName => $columnDefination){
                    $columnDefinations[] = "`".$columnName."` ".$columnDefination."";
                }
                
                $result .= implode(", ", $columnDefinations);
                
                if(isset($data["mods"])){
                    $result .= ", ".implode(", ", $data["mods"]);
                }
                
                $result .= ")";
            }
            
            $result .= ";".PHP_EOL;
        }
    }
    
    return $result;
}

echo createTableFromJson(json_decode($твоя_строка_с_json));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
26 апр. 2024, в 09:18
500 руб./в час
26 апр. 2024, в 06:46
1500 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект