public function mysql_save_from_post($post) { $is_new = $this->id == 0; if ($is_new) { if (!Table::create_new_mysql_table($post['name'])) { return json_encode(array("result" => -6, "message" => mysql_error())); } } else { if ($this->name != $post['name']) { if (!$this->rename_mysql_table($post['name'])) { return json_encode(array("result" => -6, "message" => mysql_error())); } } } $lid = parent::mysql_save_from_post($post); $obj = Table::from_mysql_id($lid); if (array_key_exists("deleteData", $post)) { if ($post["deleteData"] == "*") { $sql = sprintf("DELETE FROM `%s`", mysql_real_escape_string($obj->name)); if (!mysql_query($sql)) { return json_encode(array("result" => -6, "message" => mysql_error())); } } else { $rows = json_decode($post["deleteData"]); foreach ($rows as $row) { $sql = sprintf("DELETE FROM `%s` WHERE id='%s'", mysql_real_escape_string($obj->name), mysql_real_escape_string($row)); if (!mysql_query($sql)) { return json_encode(array("result" => -6, "message" => mysql_error())); } } } } if (array_key_exists("deleteIndexes", $post)) { $indexes = json_decode($post["deleteIndexes"]); foreach ($indexes as $index) { $sql = sprintf("DROP INDEX `%s` ON `%s`", mysql_real_escape_string($index), mysql_real_escape_string($obj->name)); if (!mysql_query($sql)) { return json_encode(array("result" => -6, "message" => mysql_error())); } } } if (array_key_exists("deleteColumns", $post)) { $columns = json_decode($post["deleteColumns"]); foreach ($columns as $column) { $sql = sprintf("ALTER TABLE `%s` DROP COLUMN `%s`", mysql_real_escape_string($obj->name), mysql_real_escape_string($column)); if (!mysql_query($sql)) { return json_encode(array("result" => -6, "message" => mysql_error())); } } } if (array_key_exists("updateColumns", $post)) { $columns = json_decode($post["updateColumns"]); foreach ($columns as $column) { $col = TableColumn::from_ui($column); if ($column->id != "") { $sql = sprintf("ALTER TABLE `%s` CHANGE COLUMN `%s` `%s` %s", mysql_real_escape_string($obj->name), mysql_real_escape_string($column->id), mysql_real_escape_string($column->name), $col->get_definition()); if (!mysql_query($sql)) { return json_encode(array("result" => -6, "message" => mysql_error())); } } else { $sql = sprintf("ALTER TABLE `%s` ADD COLUMN `%s` %s", mysql_real_escape_string($obj->name), mysql_real_escape_string($column->name), $col->get_definition()); if (!mysql_query($sql)) { return json_encode(array("result" => -6, "message" => mysql_error())); } } } } if (array_key_exists("updateIndexes", $post)) { $indexes = json_decode($post["updateIndexes"]); foreach ($indexes as $index) { $ind = TableIndex::from_ui($index); if ($index->id != "") { $sql = sprintf("ALTER TABLE `%s` DROP INDEX `%s`", mysql_real_escape_string($obj->name), mysql_real_escape_string($index->id)); if (!mysql_query($sql)) { return json_encode(array("result" => -6, "message" => mysql_error())); } } $sql = sprintf("ALTER TABLE `%s` ADD %s", mysql_real_escape_string($obj->name), $ind->get_definition()); if (!mysql_query($sql)) { return json_encode(array("result" => -6, "message" => mysql_error())); } } } $columns = $this->get_columns(); if (array_key_exists("updateData", $post)) { $rows = json_decode($post["updateData"], true); foreach ($rows as $row) { $set = ""; foreach ($row as $k => $v) { if ($k == "id") { continue; } if ($set != "") { $set .= ","; } if ($v == "") { $nullable = true; foreach ($columns as $col) { if ($col->name == $k) { $nullable = $col->null; } } if (!$nullable) { $set .= "`" . mysql_real_escape_string($k) . "`=''"; } else { $set .= "`" . mysql_real_escape_string($k) . "`=NULL"; } } else { $set .= "`" . mysql_real_escape_string($k) . "`='" . mysql_real_escape_string($v) . "'"; } } if ($row["id"] != null) { $sql = sprintf("UPDATE `%s` SET %s WHERE `id`=%s", mysql_real_escape_string($obj->name), $set, mysql_real_escape_string($row["id"])); if (!mysql_query($sql)) { return json_encode(array("result" => -6, "message" => mysql_error())); } } else { $sql = sprintf("INSERT INTO `%s` SET %s", mysql_real_escape_string($obj->name), $set); if (!mysql_query($sql)) { return json_encode(array("result" => -6, "message" => mysql_error() . " " . $sql)); } } } } //hash if ($obj != null) { $xml_hash = $obj->calculate_xml_hash(); $obj->xml_hash = $xml_hash; $obj->mysql_save(); } return $lid; }