feature 2359: simpler function single_update and single_insert

git-svn-id: http://piwigo.org/svn/trunk@11991 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
plegall 2011-08-24 19:50:54 +00:00
commit c1d7fbebdd
4 changed files with 108 additions and 78 deletions

View file

@ -350,27 +350,29 @@ DROP TABLE '.$temporary_tablename;
* updates one line in a table * updates one line in a table
* *
* @param string table_name * @param string table_name
* @param array dbfields * @param array set_fields
* @param array data * @param array where_fields
* @param int flags - if MASS_UPDATES_SKIP_EMPTY - empty values do not overwrite existing ones * @param int flags - if MASS_UPDATES_SKIP_EMPTY - empty values do not overwrite existing ones
* @return void * @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; return;
}
$query = ' $query = '
UPDATE '.$tablename.' UPDATE '.$tablename.'
SET '; SET ';
$is_first = true; $is_first = true;
foreach ($dbfields['update'] as $key) foreach ($set_fields as $key => $value)
{ {
$separator = $is_first ? '' : ",\n "; $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 else
{ {
@ -385,15 +387,15 @@ UPDATE '.$tablename.'
$query.= ' $query.= '
WHERE '; WHERE ';
$is_first = true; $is_first = true;
foreach ($dbfields['primary'] as $key) foreach ($where_fields as $key => $value)
{ {
if (!$is_first) if (!$is_first)
{ {
$query.= ' AND '; $query.= ' AND ';
} }
if ( isset($data[$key]) ) if ( isset($value) )
{ {
$query.= $key.' = \''.$data[$key].'\''; $query.= $key.' = \''.$value.'\'';
} }
else 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 string table_name
* @param array dbfields * @param array dbfields
* @param array insert * @param array insert
* @return void * @return void
*/ */
function single_insert($table_name, $dbfields, $insert) function single_insert($table_name, $data)
{ {
if (count($insert) != 0) if (count($data) != 0)
{ {
$query = ' $query = '
INSERT INTO '.$table_name.' INSERT INTO '.$table_name.'
('.implode(',', $dbfields).') ('.implode(',', array_keys($data)).')
VALUES'; VALUES';
$query .= '('; $query .= '(';
foreach ($dbfields as $field_id => $dbfield) $is_first = true;
foreach ($data as $key => $value)
{ {
if ($field_id > 0) if (!$is_first)
{ {
$query .= ','; $query .= ',';
} }
if (!isset($insert[$dbfield]) or $insert[$dbfield] === '') else
{
$is_first = false;
}
if ($value === '')
{ {
$query .= 'NULL'; $query .= 'NULL';
} }
else else
{ {
$query .= "'".$insert[$dbfield]."'"; $query .= "'".$value."'";
} }
} }
$query .= ')'; $query .= ')';

View file

@ -315,30 +315,32 @@ UPDATE '.$tablename.'
} }
/** /**
* updates on line in a table * updates one line in a table
* *
* @param string table_name * @param string table_name
* @param array dbfields * @param array set_fields
* @param array data * @param array where_fields
* @param int flags - if MASS_UPDATES_SKIP_EMPTY - empty values do not overwrite existing ones * @param int flags - if MASS_UPDATES_SKIP_EMPTY - empty values do not overwrite existing ones
* @return void * @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; return;
}
$query = ' $query = '
UPDATE '.$tablename.' UPDATE '.$tablename.'
SET '; SET ';
$is_first = true; $is_first = true;
foreach ($dbfields['update'] as $key) foreach ($set_fields as $key => $value)
{ {
$separator = $is_first ? '' : ",\n "; $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 else
{ {
@ -353,15 +355,15 @@ UPDATE '.$tablename.'
$query.= ' $query.= '
WHERE '; WHERE ';
$is_first = true; $is_first = true;
foreach ($dbfields['primary'] as $key) foreach ($where_fields as $key => $value)
{ {
if (!$is_first) if (!$is_first)
{ {
$query.= ' AND '; $query.= ' AND ';
} }
if ( isset($data[$key]) ) if ( isset($value) )
{ {
$query.= $key.' = \''.$data[$key].'\''; $query.= $key.' = \''.$value.'\'';
} }
else else
{ {
@ -373,7 +375,6 @@ UPDATE '.$tablename.'
} }
} }
/** /**
* inserts multiple lines in a table * inserts multiple lines in a table
* *
@ -445,29 +446,35 @@ INSERT INTO '.$table_name.'
* @param array insert * @param array insert
* @return void * @return void
*/ */
function single_insert($table_name, $dbfields, $insert) function single_insert($table_name, $data)
{ {
if (count($insert) != 0) if (count($data) != 0)
{ {
$query = ' $query = '
INSERT INTO '.$table_name.' INSERT INTO '.$table_name.'
('.implode(',', $dbfields).') ('.implode(',', array_keys($data)).')
VALUES'; VALUES';
$query .= '('; $query .= '(';
foreach ($dbfields as $field_id => $dbfield) $is_first = true;
foreach ($data as $key => $value)
{ {
if ($field_id > 0) if (!$is_first)
{ {
$query .= ','; $query .= ',';
} }
if (!isset($insert[$dbfield]) or $insert[$dbfield] === '') else
{
$is_first = false;
}
if ($value === '')
{ {
$query .= 'NULL'; $query .= 'NULL';
} }
else else
{ {
$query .= "'".$insert[$dbfield]."'"; $query .= "'".$value."'";
} }
} }
$query .= ')'; $query .= ')';

View file

@ -426,30 +426,32 @@ DROP TABLE '.$temporary_tablename;
} }
/** /**
* updates on line in a table * updates one line in a table
* *
* @param string table_name * @param string table_name
* @param array dbfields * @param array set_fields
* @param array data * @param array where_fields
* @param int flags - if MASS_UPDATES_SKIP_EMPTY - empty values do not overwrite existing ones * @param int flags - if MASS_UPDATES_SKIP_EMPTY - empty values do not overwrite existing ones
* @return void * @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; return;
}
$query = ' $query = '
UPDATE '.$tablename.' UPDATE '.$tablename.'
SET '; SET ';
$is_first = true; $is_first = true;
foreach ($dbfields['update'] as $key) foreach ($set_fields as $key => $value)
{ {
$separator = $is_first ? '' : ",\n "; $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 else
{ {
@ -464,15 +466,15 @@ UPDATE '.$tablename.'
$query.= ' $query.= '
WHERE '; WHERE ';
$is_first = true; $is_first = true;
foreach ($dbfields['primary'] as $key) foreach ($where_fields as $key => $value)
{ {
if (!$is_first) if (!$is_first)
{ {
$query.= ' AND '; $query.= ' AND ';
} }
if ( isset($data[$key]) ) if ( isset($value) )
{ {
$query.= $key.' = \''.$data[$key].'\''; $query.= $key.' = \''.$value.'\'';
} }
else else
{ {
@ -481,7 +483,7 @@ UPDATE '.$tablename.'
$is_first = false; $is_first = false;
} }
pwg_query($query); pwg_query($query);
} }
} }
/** /**
@ -548,36 +550,42 @@ INSERT INTO '.$table_name.'
} }
/** /**
* inserts on line in a table * inserts one line in a table
* *
* @param string table_name * @param string table_name
* @param array dbfields * @param array dbfields
* @param array insert * @param array insert
* @return void * @return void
*/ */
function single_insert($table_name, $dbfields, $insert) function single_insert($table_name, $data)
{ {
if (count($insert) != 0) if (count($data) != 0)
{ {
$query = ' $query = '
INSERT INTO '.$table_name.' INSERT INTO '.$table_name.'
('.implode(',', $dbfields).') ('.implode(',', array_keys($data)).')
VALUES'; VALUES';
$query .= '('; $query .= '(';
foreach ($dbfields as $field_id => $dbfield) $is_first = true;
foreach ($data as $key => $value)
{ {
if ($field_id > 0) if (!$is_first)
{ {
$query .= ','; $query .= ',';
} }
if (!isset($insert[$dbfield]) or $insert[$dbfield] === '') else
{
$is_first = false;
}
if ($value === '')
{ {
$query .= 'NULL'; $query .= 'NULL';
} }
else else
{ {
$query .= "'".$insert[$dbfield]."'"; $query .= "'".$value."'";
} }
} }
$query .= ')'; $query .= ')';

View file

@ -327,30 +327,32 @@ UPDATE '.$tablename.'
} }
/** /**
* updates on line in a table * updates one line in a table
* *
* @param string table_name * @param string table_name
* @param array dbfields * @param array set_fields
* @param array data * @param array where_fields
* @param int flags - if MASS_UPDATES_SKIP_EMPTY - empty values do not overwrite existing ones * @param int flags - if MASS_UPDATES_SKIP_EMPTY - empty values do not overwrite existing ones
* @return void * @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; return;
}
$query = ' $query = '
UPDATE '.$tablename.' UPDATE '.$tablename.'
SET '; SET ';
$is_first = true; $is_first = true;
foreach ($dbfields['update'] as $key) foreach ($set_fields as $key => $value)
{ {
$separator = $is_first ? '' : ",\n "; $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 else
{ {
@ -365,15 +367,15 @@ UPDATE '.$tablename.'
$query.= ' $query.= '
WHERE '; WHERE ';
$is_first = true; $is_first = true;
foreach ($dbfields['primary'] as $key) foreach ($where_fields as $key => $value)
{ {
if (!$is_first) if (!$is_first)
{ {
$query.= ' AND '; $query.= ' AND ';
} }
if ( isset($data[$key]) ) if ( isset($value) )
{ {
$query.= $key.' = \''.$data[$key].'\''; $query.= $key.' = \''.$value.'\'';
} }
else else
{ {
@ -385,7 +387,6 @@ UPDATE '.$tablename.'
} }
} }
/** /**
* inserts multiple lines in a table * inserts multiple lines in a table
* *
@ -457,29 +458,35 @@ INSERT INTO '.$table_name.'
* @param array insert * @param array insert
* @return void * @return void
*/ */
function single_insert($table_name, $dbfields, $insert) function single_insert($table_name, $data)
{ {
if (count($insert) != 0) if (count($data) != 0)
{ {
$query = ' $query = '
INSERT INTO '.$table_name.' INSERT INTO '.$table_name.'
('.implode(',', $dbfields).') ('.implode(',', array_keys($data)).')
VALUES'; VALUES';
$query .= '('; $query .= '(';
foreach ($dbfields as $field_id => $dbfield) $is_first = true;
foreach ($data as $key => $value)
{ {
if ($field_id > 0) if (!$is_first)
{ {
$query .= ','; $query .= ',';
} }
if (!isset($insert[$dbfield]) or $insert[$dbfield] === '') else
{
$is_first = false;
}
if ($value === '')
{ {
$query .= 'NULL'; $query .= 'NULL';
} }
else else
{ {
$query .= "'".$insert[$dbfield]."'"; $query .= "'".$value."'";
} }
} }
$query .= ')'; $query .= ')';