diff options
Diffstat (limited to 'admin/include/functions.php')
-rw-r--r-- | admin/include/functions.php | 49 |
1 files changed, 32 insertions, 17 deletions
diff --git a/admin/include/functions.php b/admin/include/functions.php index 5cb81e9cb..0bf9db6f0 100644 --- a/admin/include/functions.php +++ b/admin/include/functions.php @@ -277,7 +277,7 @@ function update_category($ids = 'all') } $where_cats = '%s IN('.wordwrap(implode(', ', $ids), 120, "\n").')'; } - + // find all categories where the setted representative is not possible : // the picture does not exist $query = ' @@ -394,15 +394,15 @@ function mass_inserts($table_name, $dbfields, $datas) if ($first) { $query = ' - INSERT INTO '.$table_name.' - ('.implode(',', $dbfields).') - VALUES'; +INSERT INTO '.$table_name.' + ('.implode(',', $dbfields).') + VALUES'; $first = false; } else { $query .= ' - , '; + , '; } $query .= '('; @@ -452,8 +452,8 @@ function mass_updates($tablename, $dbfields, $datas) foreach ($datas as $data) { $query = ' - UPDATE '.$tablename.' - SET '; +UPDATE '.$tablename.' + SET '; $is_first = true; foreach ($dbfields['update'] as $key) { @@ -473,7 +473,7 @@ function mass_updates($tablename, $dbfields, $datas) $is_first = false; } $query.= ' - WHERE '; + WHERE '; $is_first = true; foreach ($dbfields['primary'] as $key) @@ -482,11 +482,18 @@ function mass_updates($tablename, $dbfields, $datas) { $query.= ' AND '; } - $query.= $key.' = \''.$data[$key].'\''; + if ( isset($data[$key]) ) + { + $query.= $key.' = \''.$data[$key].'\''; + } + else + { + $query.= $key.' IS NULL'; + } $is_first = false; } $query.= ' - ;'; +;'; pwg_query($query); } } @@ -494,7 +501,7 @@ function mass_updates($tablename, $dbfields, $datas) { // creation of the temporary table $query = ' - SHOW FULL COLUMNS FROM '.$tablename.' +SHOW FULL COLUMNS FROM '.$tablename.' ;'; $result = pwg_query($query); $columns = array(); @@ -505,14 +512,21 @@ function mass_updates($tablename, $dbfields, $datas) { $column = $row['Field']; $column.= ' '.$row['Type']; - if (!isset($row['Null']) or $row['Null'] == '') + + $nullable = true; + if (!isset($row['Null']) or $row['Null'] == '' or $row['Null']=='NO') { $column.= ' NOT NULL'; + $nullable = false; } if (isset($row['Default'])) { $column.= " default '".$row['Default']."'"; } + elseif ($nullable) + { + $column.= " default NULL"; + } if (isset($row['Collation']) and $row['Collation'] != 'NULL') { $column.= " collate '".$row['Collation']."'"; @@ -527,15 +541,16 @@ function mass_updates($tablename, $dbfields, $datas) CREATE TABLE '.$temporary_tablename.' ( '.implode(",\n", $columns).', - PRIMARY KEY ('.implode(',', $dbfields['primary']).') + UNIQUE KEY the_key ('.implode(',', $dbfields['primary']).') ) ;'; + pwg_query($query); mass_inserts($temporary_tablename, $all_fields, $datas); // update of images table by joining with temporary table $query = ' - UPDATE '.$tablename.' AS t1, '.$temporary_tablename.' AS t2 - SET '. +UPDATE '.$tablename.' AS t1, '.$temporary_tablename.' AS t2 + SET '. implode( "\n , ", array_map( @@ -543,7 +558,7 @@ function mass_updates($tablename, $dbfields, $datas) $dbfields['update'] ) ).' - WHERE '. + WHERE '. implode( "\n AND ", array_map( @@ -554,7 +569,7 @@ function mass_updates($tablename, $dbfields, $datas) ;'; pwg_query($query); $query = ' - DROP TABLE '.$temporary_tablename.' +DROP TABLE '.$temporary_tablename.' ;'; pwg_query($query); } |