首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将PHP对象转储到SQL表中?

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

Stack Overflow用户
提问于 2016-12-12 05:58:15
回答 1查看 1.8K关注 0票数 1

我想知道是否有一种快速的方法可以做到以下几点:

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

代码语言:javascript
复制
$person;
$person->height = 165;
$person->name = 'john';

我想将其转储到SQLite MySQL DB中,同时根据PHP的属性名自动创建每个列。因此,例如,如果我要将上面的对象转储到mySQL中,它应该如下所示:

代码语言:javascript
复制
Table : people
Name(Column, VARCHAR)  -  "John"
Height(Column, INT)  -  165 

我之所以问这个问题,是因为属性的数量在不断增加,必须手动创建和管理表列是一项艰巨的工作。我想知道是否有一种自动化的方法来做到这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-12 08:15:55

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

如下所示:

步骤1:转换object to array

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

步骤3:生成sql查询

代码语言:javascript
复制
    <?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);
    
    ?>

希望这能对你有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41094941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档