Index: branches/RC/core/kernel/db/db_connection.php =================================================================== diff -u -N -r10921 -r11408 --- branches/RC/core/kernel/db/db_connection.php (.../db_connection.php) (revision 10921) +++ branches/RC/core/kernel/db/db_connection.php (.../db_connection.php) (revision 11408) @@ -623,11 +623,12 @@ $values_sql = ''; foreach ($fields_hash as $field_name => $field_value) { $fields_sql .= '`'.$field_name.'`,'; - $values_sql .= $this->qstr($field_value).','; + $values_sql .= ( is_null($field_value) ? 'NULL' : $this->qstr($field_value) ) . ','; } - $fields_sql = preg_replace('/(.*),$/', '\\1', $fields_sql); - $values_sql = preg_replace('/(.*),$/', '\\1', $values_sql); + // don't use preg here, as it may fail when string is too long + $fields_sql = rtrim($fields_sql, ','); + $values_sql = rtrim($values_sql, ','); $sql = strtoupper($type).' INTO `'.$table.'` ('.$fields_sql.') VALUES ('.$values_sql.')'; return $this->ChangeQuery($sql); @@ -639,10 +640,11 @@ $fields_sql = ''; foreach ($fields_hash as $field_name => $field_value) { - $fields_sql .= '`'.$field_name.'` = '.$this->qstr($field_value).','; + $fields_sql .= '`'.$field_name.'` = ' . ( is_null($field_value) ? 'NULL' : $this->qstr($field_value) ) . ','; } - $fields_sql = preg_replace('/(.*),$/', '\\1', $fields_sql); + // don't use preg here! + $fields_sql = rtrim($fields_sql, ','); $sql = 'UPDATE `'.$table.'` SET '.$fields_sql.' WHERE '.$key_clause;