Index: branches/unlabeled/unlabeled-1.30.2/core/kernel/db/dbitem.php =================================================================== diff -u -r7843 -r7874 --- branches/unlabeled/unlabeled-1.30.2/core/kernel/db/dbitem.php (.../dbitem.php) (revision 7843) +++ branches/unlabeled/unlabeled-1.30.2/core/kernel/db/dbitem.php (.../dbitem.php) (revision 7874) @@ -323,7 +323,7 @@ { $skip = false; $skip = $skip || ( isset($this->VirtualFields[$field_name]) ); //skipping 'virtual' field - $skip = $skip || ( !getArrayValue($this->FieldValues, $field_name) && getArrayValue($this->Fields[$field_name], 'skip_empty') ); //skipping marked field with 'skip_empty' + $skip = $skip || ( !getArrayValue($this->FieldValues, $field_name) && getArrayValue($this->Fields[$field_name], 'skip_empty') ); //skipping 'virtual' field // $skip = $skip || ($field_name == $this->IDField && !$force_id); //skipping Primary Key // $table_name = preg_replace("/^(.*)\./", "$1", $field_name); @@ -675,29 +675,27 @@ $fields_sql = ''; $values_sql = ''; - foreach ($this->FieldValues as $field_name => $field_value) { + foreach ($this->FieldValues as $field_name => $field_value) + { if ($this->SkipField($field_name, $force_id)) continue; - //Adding field' value to Values block of Insert statement, escaping it with qstr - if (is_null( $this->FieldValues[$field_name] )) { - if (isset($this->Fields[$field_name]['not_null']) && $this->Fields[$field_name]['not_null']) { - $values_sql .= $this->Conn->qstr($this->Fields[$field_name]['default'], 0); - } - else { - $values_sql .= 'NULL'; - } - } - else { - if ($field_name == $this->IDField && $this->FieldValues[$field_name] == 0) { - $values_sql .= 'DEFAULT'; - } - else { - $values_sql .= $this->Conn->qstr($this->FieldValues[$field_name], 0); - } - } - - $fields_sql .= '`'.$field_name.'`, '; //Adding field name to fields block of Insert statement - $values_sql .= ', '; + $fields_sql .= sprintf('`%s`, ',$field_name); //Adding field name to fields block of Insert statement + //Adding field' value to Values block of Insert statement, escaping it with ADODB' qstr + if (is_null( $this->FieldValues[$field_name] )) + { + if (isset($this->Fields[$field_name]['not_null']) && $this->Fields[$field_name]['not_null']) + { + $values_sql .= $this->Conn->qstr($this->Fields[$field_name]['default']).', '; + } + else + { + $values_sql .= 'NULL, '; + } + } + else + { + $values_sql .= sprintf('%s, ',$this->Conn->qstr($this->FieldValues[$field_name], 0)); + } } //Cutting last commas and spaces $fields_sql = ereg_replace(", $", '', $fields_sql); @@ -708,10 +706,7 @@ if ($this->Conn->ChangeQuery($sql) === false) return false; $insert_id = $this->Conn->getInsertID(); - if ($insert_id == 0) { - // insert into temp table (id is not auto-increment field) - $insert_id = $this->FieldValues[$this->IDField]; - } + if($insert_id == 0) $insert_id = $this->FieldValues[$this->IDField]; $this->setID($insert_id); if (!$system_create){