Как сбросить объект PHP в таблицу SQL?

Мне интересно, есть ли быстрый способ сделать следующее:

У меня есть объект PHP с несколькими атрибутами. Например

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

Я хотел бы записать это в базу данных SQLite MySQL при создании каждого столбца автоматически из имен атрибутов объекта PHP. Так, например, если бы я выгружал вышеуказанный объект в mySQL, он бы выглядел примерно так:

Table : people
Name(Column, VARCHAR)  -  "John"Height(Column, INT)  -  165

Причина, по которой я спрашиваю об этом, заключается в том, что количество атрибутов постоянно растет, а необходимость создавать столбцы таблицы и управлять ими вручную — большая работа. Мне интересно, есть ли автоматизированный способ сделать это.

0

Решение

Сначала вам нужно конвертировать object в array а затем вы можете перебрать его и можете создать table а также insert ценности в нем.

Что-то вроде ниже:

Шаг 1: конвертировать объект для массива

Шаг 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);

?>

Надеюсь, это поможет вам в некотором роде (у).

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector