From 029688227b8c004ce660e06c61330c125f8b1c21 Mon Sep 17 00:00:00 2001 From: mistic100 Date: Wed, 22 Jun 2011 15:56:19 +0000 Subject: feature:2359 add single_update and single_insert functions git-svn-id: http://piwigo.org/svn/trunk@11485 68402e56-0260-453c-a942-63ccdbb3a9ee --- include/dblayer/functions_pgsql.inc.php | 100 +++++++++++++++++++++++++++++++- 1 file changed, 98 insertions(+), 2 deletions(-) (limited to 'include/dblayer/functions_pgsql.inc.php') diff --git a/include/dblayer/functions_pgsql.inc.php b/include/dblayer/functions_pgsql.inc.php index 67c42eeb1..c8a8dedbd 100644 --- a/include/dblayer/functions_pgsql.inc.php +++ b/include/dblayer/functions_pgsql.inc.php @@ -355,7 +355,7 @@ UPDATE '.$tablename.' } else { - if ($flags & MASS_UPDATES_SKIP_EMPTY ) + if ( $flags & MASS_UPDATES_SKIP_EMPTY ) continue; // next field $query.= "$separator$key = NULL"; } @@ -425,6 +425,64 @@ DROP TABLE '.$temporary_tablename; } } +/** + * updates on line in a table + * + * @param string table_name + * @param array dbfields + * @param array data + * @param int flags - if MASS_UPDATES_SKIP_EMPTY - empty values do not overwrite existing ones + * @return void + */ +function single_update($tablename, $dbfields, $data, $flags=0) +{ + if (count($data) == 0) + return; + + $query = ' +UPDATE '.$tablename.' + SET '; + $is_first = true; + foreach ($dbfields['update'] as $key) + { + $separator = $is_first ? '' : ",\n "; + + if (isset($data[$key]) and $data[$key] != '') + { + $query.= $separator.$key.' = \''.$data[$key].'\''; + } + else + { + if ( $flags & MASS_UPDATES_SKIP_EMPTY ) + continue; // next field + $query.= "$separator$key = NULL"; + } + $is_first = false; + } + if (!$is_first) + {// only if one field at least updated + $query.= ' + WHERE '; + $is_first = true; + foreach ($dbfields['primary'] as $key) + { + if (!$is_first) + { + $query.= ' AND '; + } + if ( isset($data[$key]) ) + { + $query.= $key.' = \''.$data[$key].'\''; + } + else + { + $query.= $key.' IS NULL'; + } + $is_first = false; + } + pwg_query($query); + } +} /** * inserts multiple lines in a table @@ -434,7 +492,6 @@ DROP TABLE '.$temporary_tablename; * @param array inserts * @return void */ - function mass_inserts($table_name, $dbfields, $datas) { if (count($datas) != 0) @@ -490,6 +547,45 @@ INSERT INTO '.$table_name.' } } +/** + * inserts on line in a table + * + * @param string table_name + * @param array dbfields + * @param array insert + * @return void + */ +function single_insert($table_name, $dbfields, $insert) +{ + if (count($insert) != 0) + { + $query = ' +INSERT INTO '.$table_name.' + ('.implode(',', $dbfields).') + VALUES'; + + $query .= '('; + foreach ($dbfields as $field_id => $dbfield) + { + if ($field_id > 0) + { + $query .= ','; + } + if (!isset($insert[$dbfield]) or $insert[$dbfield] === '') + { + $query .= 'NULL'; + } + else + { + $query .= "'".$insert[$dbfield]."'"; + } + } + $query .= ')'; + + pwg_query($query); + } +} + /** * Do maintenance on all PWG tables * -- cgit v1.2.3