From c1d7fbebdde17a90f8cb42e7a4c3fa551dcb6b79 Mon Sep 17 00:00:00 2001 From: plegall Date: Wed, 24 Aug 2011 19:50:54 +0000 Subject: feature 2359: simpler function single_update and single_insert git-svn-id: http://piwigo.org/svn/trunk@11991 68402e56-0260-453c-a942-63ccdbb3a9ee --- include/dblayer/functions_mysql.inc.php | 44 +++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 18 deletions(-) (limited to 'include/dblayer/functions_mysql.inc.php') diff --git a/include/dblayer/functions_mysql.inc.php b/include/dblayer/functions_mysql.inc.php index de63c0cac..e74cddb0d 100644 --- a/include/dblayer/functions_mysql.inc.php +++ b/include/dblayer/functions_mysql.inc.php @@ -350,27 +350,29 @@ DROP TABLE '.$temporary_tablename; * updates one line in a table * * @param string table_name - * @param array dbfields - * @param array data + * @param array set_fields + * @param array where_fields * @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) +function single_update($tablename, $set_fields, $where_fields, $flags=0) { - if (count($data) == 0) + if (count($set_fields) == 0) + { return; + } $query = ' UPDATE '.$tablename.' SET '; $is_first = true; - foreach ($dbfields['update'] as $key) + foreach ($set_fields as $key => $value) { $separator = $is_first ? '' : ",\n "; - if (isset($data[$key]) and $data[$key] != '') + if (isset($value) and $value != '') { - $query.= $separator.$key.' = \''.$data[$key].'\''; + $query.= $separator.$key.' = \''.$value.'\''; } else { @@ -385,15 +387,15 @@ UPDATE '.$tablename.' $query.= ' WHERE '; $is_first = true; - foreach ($dbfields['primary'] as $key) + foreach ($where_fields as $key => $value) { if (!$is_first) { $query.= ' AND '; } - if ( isset($data[$key]) ) + if ( isset($value) ) { - $query.= $key.' = \''.$data[$key].'\''; + $query.= $key.' = \''.$value.'\''; } else { @@ -471,36 +473,42 @@ INSERT INTO '.$table_name.' } /** - * inserts on line in a table + * inserts one line in a table * * @param string table_name * @param array dbfields * @param array insert * @return void */ -function single_insert($table_name, $dbfields, $insert) +function single_insert($table_name, $data) { - if (count($insert) != 0) + if (count($data) != 0) { $query = ' INSERT INTO '.$table_name.' - ('.implode(',', $dbfields).') + ('.implode(',', array_keys($data)).') VALUES'; $query .= '('; - foreach ($dbfields as $field_id => $dbfield) + $is_first = true; + foreach ($data as $key => $value) { - if ($field_id > 0) + if (!$is_first) { $query .= ','; } - if (!isset($insert[$dbfield]) or $insert[$dbfield] === '') + else + { + $is_first = false; + } + + if ($value === '') { $query .= 'NULL'; } else { - $query .= "'".$insert[$dbfield]."'"; + $query .= "'".$value."'"; } } $query .= ')'; -- cgit v1.2.3