如何将PHP对象转储到SQL表中?

时间:2016-12-12 05:58:16

标签: php mysql sqlite dump

我想知道是否有快速的方法来执行以下操作:

我有一个具有多个属性的PHP对象。例如

     
<body>
<div class="i-home-left">

 <ul id="make-select-box">
   <li><a href="#i-bc"> 1 </a></li>
   <li><a href="#i-st"> 2 </a></li>
   <li><a href="#i-mm"> 3 </a></li>
   <li><a href="#i-cc"> 4 </a></li>
</ul>

</div>
<div id="i-bc">some content here </div>
<div id="i-st">some content here </div>
<div id="i-mm">some content here </div>
<div id="i-cc">some content here </div>
</body>

我想将这个转储到SQLite MySQL数据库中,同时从PHP对象的属性名称自动创建每一列。因此,例如,如果我将上述对象转储到mySQL中,它将看起来像这样:

$person;
$person->height = 165;
$person->name = 'john';

我问这个的原因是因为属性的数量不断增加,并且必须手动创建和管理表列是很多工作。我想知道是否有一种自动化的方法。

1 个答案:

答案 0 :(得分:1)

首先,您需要将object转换为array,然后您可以对其进行迭代,并在其中创建tableinsert值。

如下所示:

第1步:转换object to array

第2步:从数组中获取键(字段)和值

第3步:生成SQL查询

    <?php
    //Step 1: convert object to array
    //$persion =  (array) $yourObject;

    //Step 2: get keys(fields) and values out of array
    $person = array(
        "height" => "165",
        "name" => "john",
        "age" => "23"
    );

    function data_type($val) {
        if(is_numeric($val)) { 
            return "int"; 
        } 
        else {
            return "varchar(15)";
        }   
    }

    //Step 3: sql query, only including sql query
    function create_table($person) {
        $create = "CREATE TABLE IF NOT EXISTS people";
        $ctr = 0;
        foreach($person as $key => $value) {
            if($ctr == 0) {
                $field_query = $key." ".data_type($value);
            } else {
                $field_query .= ", ".$key." ".data_type($value);
            }
            $ctr++;
        }
        echo $create .= " (".$field_query.")";
        echo "<br/>";
    }
    create_table($person);

    function insert_table($person) {
        $ctr = 0;
        foreach($person as $key => $value) {
            if($ctr == 0) {
                $field_query = $key;
                $value_query = $value;
            } else {
                $field_query .= ", ".$key;
                $value_query .= ", ".$value;
            }
            $ctr++;
        }
        echo $insert = "INSERT INTO people"." (".$field_query.") VALUES (".$value_query.")";
    }
    insert_table($person);

    ?>

希望这会以某种方式帮助你(y)。