我想知道是否有一种快速的方法可以做到以下几点:
我有一个具有多个属性的PHP对象。例如
$person;
$person->height = 165;
$person->name = 'john';我想将其转储到SQLite MySQL DB中,同时根据PHP的属性名自动创建每个列。因此,例如,如果我要将上面的对象转储到mySQL中,它应该如下所示:
Table : people
Name(Column, VARCHAR) - "John"
Height(Column, INT) - 165 我之所以问这个问题,是因为属性的数量在不断增加,必须手动创建和管理表列是一项艰巨的工作。我想知道是否有一种自动化的方法来做到这一点。
发布于 2016-12-12 08:15:55
首先,您需要将object转换为array,然后可以迭代它,并在其中创建table和insert值。
如下所示:
步骤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);
?>希望这能对你有所帮助。
https://stackoverflow.com/questions/41094941
复制相似问题