sql >> Database >  >> RDS >> Mysql

Kan ik dynamisch een mySQL-tabel maken vanuit JSON?

Eenvoudig codestuk om een ​​mysql-tabel te maken en waarden van elke JSON-variabele in te voegen. Dit is een snelle hack.. controleer veldtypes enz. :) Er zijn waarschijnlijk betere manieren, maar deze werkt en heeft me al uren bespaard bij het handmatig benoemen van velden

Dit kan worden gewijzigd om ook een relatietabel te maken die objecten verwerkt. Nu is het gemaakt voor array-gevormde JSON-dingen en niet voor objecten, dwz 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;
            }
?>


  1. Cross-join in Oracle

  2. LAAD GEGEVENS LOKAAL INFILE verboden in... PHP

  3. Zal het verplaatsen van gegevens van EBS naar tijdelijke opslag de prestaties van MySQL-query's verbeteren?

  4. Het verschil tussen INSTR() en LOCATE() in MariaDB