public function get_TableIndex()
 {
     return TableIndex::from_mysql_id($this->TableIndex_id);
 }
示例#2
0
 public function get_TableIndexes()
 {
     return TableIndex::from_property(array("Table_id" => $this->id));
 }
示例#3
0
 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;
 }
示例#4
0
文件: Table.php 项目: juyagu/Analia
 /**
  * Obtiene el detalle de indices de la tabla actual
  * @return Array
  */
 public function checkTableIndexes()
 {
     $sql = "select i.index_name, ic.column_name, i.index_type, i.uniqueness, ic.column_position " . "from user_indexes i " . "inner join user_ind_columns ic on i.index_name = ic.index_name " . "where i.table_owner = upper(:v_owner) " . "and i.table_name = upper(:v_table) " . "order by i.index_name, ic.column_position";
     $stmt = oci_parse($this->getConnection(), $sql);
     oci_bind_by_name($stmt, ":v_table", $this->objectName);
     oci_bind_by_name($stmt, ":v_owner", $this->owner);
     if (!@oci_execute($stmt)) {
         $e = oci_error();
         $this->setMensaje("Error al obtener el detalle de los índices de la tabla o vista '{$this->objectName}' - {$e['message']}");
         $this->setEstado(false);
     }
     while ($row = oci_fetch_array($stmt, OCI_ASSOC | OCI_RETURN_NULLS)) {
         $index = new TableIndex();
         $index->setIndexName($row['INDEX_NAME']);
         $index->setColumnName($row['COLUMN_NAME']);
         $index->setIndexType($row['INDEX_TYPE']);
         $index->setUniqueness($row['UNIQUENESS']);
         $index->setColumnPosition($row['COLUMN_POSITION']);
         $this->aIndexes[] = $index;
     }
     return $this->aIndexes;
 }