Ignore:
Timestamp:
Feb 11, 2014, 10:47:44 PM (10 years ago)
Author:
rvelices
Message:

arrayfromquery optimizations: move double if from inside loop to outside + use directly mysqli calls to avoid function call overhead for every row retrieved from db

File:
1 edited

Legend:

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

    r26461 r27336  
    761761}
    762762
     763/**
     764 * Builds an data array from a SQL query.
     765 * Depending on $key_name and $value_name it can return :
     766 *
     767 *    - an array of arrays of all fields (key=null, value=null)
     768 *        array(
     769 *          array('id'=>1, 'name'=>'DSC8956', ...),
     770 *          array('id'=>2, 'name'=>'DSC8957', ...),
     771 *          ...
     772 *          )
     773 *
     774 *    - an array of a single field (key=null, value='...')
     775 *        array('DSC8956', 'DSC8957', ...)
     776 *
     777 *    - an associative array of array of all fields (key='...', value=null)
     778 *        array(
     779 *          'DSC8956' => array('id'=>1, 'name'=>'DSC8956', ...),
     780 *          'DSC8957' => array('id'=>2, 'name'=>'DSC8957', ...),
     781 *          ...
     782 *          )
     783 *
     784 *    - an associative array of a single field (key='...', value='...')
     785 *        array(
     786 *          'DSC8956' => 1,
     787 *          'DSC8957' => 2,
     788 *          ...
     789 *          )
     790 *
     791 * @since 2.6
     792 *
     793 * @param string $query
     794 * @param string $key_name
     795 * @param string $value_name
     796 * @return array
     797 */
     798function query2array($query, $key_name=null, $value_name=null)
     799{
     800  $result = pwg_query($query);
     801  $data = array();
     802
     803  if (isset($key_name))
     804  {
     805    if (isset($value_name))
     806    {
     807      while ($row = pwg_db_fetch_assoc($result))
     808        $data[ $row[$key_name] ] = $row[$value_name];
     809    }
     810    else
     811    {
     812      while ($row = pwg_db_fetch_assoc($result))
     813        $data[ $row[$key_name] ] = $row;
     814    }
     815  }
     816  else
     817  {
     818    if (isset($value_name))
     819    {
     820      while ($row = pwg_db_fetch_assoc($result))
     821        $data[] = $row[$value_name];
     822    }
     823    else
     824    {
     825      while ($row = pwg_db_fetch_assoc($result))
     826        $data[] = $row;
     827    }
     828  }
     829
     830  return $data;
     831}
     832
    763833?>
Note: See TracChangeset for help on using the changeset viewer.