Skip to content

Commit

Permalink
feature 2359: simpler function single_update and single_insert
Browse files Browse the repository at this point in the history
git-svn-id: http://piwigo.org/svn/trunk@11991 68402e56-0260-453c-a942-63ccdbb3a9ee
  • Loading branch information
plegall committed Aug 24, 2011
1 parent e780496 commit c1d7fbe
Show file tree
Hide file tree
Showing 4 changed files with 108 additions and 78 deletions.
44 changes: 26 additions & 18 deletions include/dblayer/functions_mysql.inc.php
Expand Up @@ -350,27 +350,29 @@ function mass_updates($tablename, $dbfields, $datas, $flags=0)
* 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
{
Expand All @@ -385,15 +387,15 @@ function single_update($tablename, $dbfields, $data, $flags=0)
$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
{
Expand Down Expand Up @@ -471,36 +473,42 @@ function mass_inserts($table_name, $dbfields, $datas)
}

/**
* 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 .= ')';
Expand Down
47 changes: 27 additions & 20 deletions include/dblayer/functions_pdo-sqlite.inc.php
Expand Up @@ -315,30 +315,32 @@ function mass_updates($tablename, $dbfields, $datas, $flags=0)
}

/**
* updates on line in a table
* 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
{
Expand All @@ -353,15 +355,15 @@ function single_update($tablename, $dbfields, $data, $flags=0)
$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
{
Expand All @@ -373,7 +375,6 @@ function single_update($tablename, $dbfields, $data, $flags=0)
}
}


/**
* inserts multiple lines in a table
*
Expand Down Expand Up @@ -445,29 +446,35 @@ function mass_inserts($table_name, $dbfields, $datas)
* @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 .= ')';
Expand Down
48 changes: 28 additions & 20 deletions include/dblayer/functions_pgsql.inc.php
Expand Up @@ -426,30 +426,32 @@ function mass_updates($tablename, $dbfields, $datas, $flags=0)
}

/**
* updates on line in a table
* 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
{
Expand All @@ -464,15 +466,15 @@ function single_update($tablename, $dbfields, $data, $flags=0)
$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
{
Expand All @@ -481,7 +483,7 @@ function single_update($tablename, $dbfields, $data, $flags=0)
$is_first = false;
}
pwg_query($query);
}
}
}

/**
Expand Down Expand Up @@ -548,36 +550,42 @@ function mass_inserts($table_name, $dbfields, $datas)
}

/**
* 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 .= ')';
Expand Down

0 comments on commit c1d7fbe

Please sign in to comment.