show.php
<?php
$columns = explode(',',$_POST['columns']);
$columns = array_map(function($value){return trim($value);},$columns);
$insertColumnList = '('.implode(', ',$columns).')';
$insertValuesList = 'VALUES(:'.implode(',:',$columns).')';
$updateAppend = '';
$addIdBack = FALSE;
if (in_array('id',$columns)){
unset($columns[array_keys($columns,'id')[0]]);
$updateAppend = ' WHERE id=:id';
$addIdBack = TRUE;
}
$updateColumnList = array_map(function($column){return $column.'=:'.$column;},$columns);
$updateColumns = "SET ".implode(',',$updateColumnList).$updateAppend;
if ($addIdBack)$columns[] = 'id';
$colPointers = array_map(function($column){return " ':{$column}' => \$object->{$column},\n";},$columns);
$executeArray = "[\n".implode('',$colPointers)."\n ]";
// $executeArray = "[\n ':".implode("' => \$,\n ':",$columns). "' => \$,\n ]";
$phpCode =
<<<PHP
public function (\$object){
\$object = ;
\$table = ;
\$pdo = \$this->config->pdo;
\$query = '';
if (\$object->id===NULL){
\$query = "INSERT INTO {\$table}{$insertColumnList} {$insertValuesList}";
} else {
\$query = "UPDATE {\$table} {$updateColumns}";
}
\$statement = \$pdo->prepare(\$query);
\$statement->execute({$executeArray});
\$object->id = \$pdo->lastInsertId();
}
PHP;
echo '<pre>';
echo $insertColumnList;
echo "\n";
echo $insertValuesList;
echo "\n";
echo $updateColumns;
echo "\n";
echo $executeArray;
echo "\n\n";
echo $phpCode;
echo '<pre>';
?>