Ignore:
Timestamp:
Aug 24, 2011, 9:50:54 PM (13 years ago)
Author:
plg
Message:

feature 2359: simpler function single_update and single_insert

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/dblayer/functions_mysql.inc.php

    r11485 r11991  
    351351 *
    352352 * @param string table_name
    353  * @param array dbfields
    354  * @param array data
     353 * @param array set_fields
     354 * @param array where_fields
    355355 * @param int flags - if MASS_UPDATES_SKIP_EMPTY - empty values do not overwrite existing ones
    356356 * @return void
    357357 */
    358 function single_update($tablename, $dbfields, $data, $flags=0)
    359 {
    360   if (count($data) == 0)
     358function single_update($tablename, $set_fields, $where_fields, $flags=0)
     359{
     360  if (count($set_fields) == 0)
     361  {
    361362    return;
     363  }
    362364
    363365  $query = '
     
    365367  SET ';
    366368  $is_first = true;
    367   foreach ($dbfields['update'] as $key)
     369  foreach ($set_fields as $key => $value)
    368370  {
    369371    $separator = $is_first ? '' : ",\n    ";
    370372
    371     if (isset($data[$key]) and $data[$key] != '')
    372     {
    373       $query.= $separator.$key.' = \''.$data[$key].'\'';
     373    if (isset($value) and $value != '')
     374    {
     375      $query.= $separator.$key.' = \''.$value.'\'';
    374376    }
    375377    else
     
    386388  WHERE ';
    387389    $is_first = true;
    388     foreach ($dbfields['primary'] as $key)
     390    foreach ($where_fields as $key => $value)
    389391    {
    390392      if (!$is_first)
     
    392394        $query.= ' AND ';
    393395      }
    394       if ( isset($data[$key]) )
    395       {
    396         $query.= $key.' = \''.$data[$key].'\'';
     396      if ( isset($value) )
     397      {
     398        $query.= $key.' = \''.$value.'\'';
    397399      }
    398400      else
     
    472474
    473475/**
    474  * inserts on line in a table
     476 * inserts one line in a table
    475477 *
    476478 * @param string table_name
     
    479481 * @return void
    480482 */
    481 function single_insert($table_name, $dbfields, $insert)
    482 {
    483   if (count($insert) != 0)
     483function single_insert($table_name, $data)
     484{
     485  if (count($data) != 0)
    484486  {
    485487    $query = '
    486488INSERT INTO '.$table_name.'
    487   ('.implode(',', $dbfields).')
     489  ('.implode(',', array_keys($data)).')
    488490  VALUES';
    489491
    490492    $query .= '(';
    491     foreach ($dbfields as $field_id => $dbfield)
    492     {
    493       if ($field_id > 0)
     493    $is_first = true;
     494    foreach ($data as $key => $value)
     495    {
     496      if (!$is_first)
    494497      {
    495498        $query .= ',';
    496499      }
    497       if (!isset($insert[$dbfield]) or $insert[$dbfield] === '')
     500      else
     501      {
     502        $is_first = false;
     503      }
     504     
     505      if ($value === '')
    498506      {
    499507        $query .= 'NULL';
     
    501509      else
    502510      {
    503         $query .= "'".$insert[$dbfield]."'";
     511        $query .= "'".$value."'";
    504512      }
    505513    }
Note: See TracChangeset for help on using the changeset viewer.