Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Kann ich eine mySQL-Tabelle dynamisch aus JSON erstellen?

Einfaches Codestück zum Erstellen einer MySQL-Tabelle und Einfügen von Werten aus einer beliebigen JSON-Variablen. Dies ist ein schneller Hack.. Feldtypen überprüfen usw. :) Es gibt wahrscheinlich bessere Wege, aber dieser funktioniert und hat mir schon Stunden bei der manuellen Feldbenennung gespart

Dies kann geändert werden, um eine Beziehungstabelle zu erstellen, die auch Objekte behandelt. Jetzt ist es für Array-geformtes JSON-Zeug gemacht und nicht für Objekte, dh Arrays in Arrays.

<?php

    JSON_to_table($place_your_JSON_var_here_please);

            function JSON_to_table($j_obj, $tblName = "New_JSON_table_" . time()){
            $j_obj = json_decode($your_JSON_variable, true);
            if(!mysql_num_rows( mysql_query("SHOW TABLES LIKE '" . $tblName . "'"))){ 
                $cq = "CREATE TABLE ". $tblName ." (
                id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,";
                foreach($j_obj as $j_arr_key => $value){
                    $cq .= $j_arr_key . " VARCHAR(256),";
                }
                $cq = substr_replace($cq,"",-1);
                $cq .= ")";
                mysql_query($cq) or die(mysql_error());
            }

            $qi = "INSERT INTO $tblName (";
            reset($j_obj);
                foreach($j_obj as $j_arr_key => $value){
                    $qi .= $j_arr_key . ",";
                }
                $qi = substr_replace($qi,"",-1);
            $qi .= ") VALUES (";
            reset($j_obj);
                foreach($j_obj as $j_arr_key => $value){
                    $qi .= "'" . mysql_real_escape_string($value) . "',";
                }
            $qi = substr_replace($qi,"",-1);
            $qi .= ")";
            $result = mysql_query($qi) or die(mysql_error());

        return true;
            }
?>