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_mysqli.inc.php

    r26461 r27336  
    800800}
    801801
     802/**
     803 * Builds an data array from a SQL query.
     804 * Depending on $key_name and $value_name it can return :
     805 *
     806 *    - an array of arrays of all fields (key=null, value=null)
     807 *        array(
     808 *          array('id'=>1, 'name'=>'DSC8956', ...),
     809 *          array('id'=>2, 'name'=>'DSC8957', ...),
     810 *          ...
     811 *          )
     812 *
     813 *    - an array of a single field (key=null, value='...')
     814 *        array('DSC8956', 'DSC8957', ...)
     815 *
     816 *    - an associative array of array of all fields (key='...', value=null)
     817 *        array(
     818 *          'DSC8956' => array('id'=>1, 'name'=>'DSC8956', ...),
     819 *          'DSC8957' => array('id'=>2, 'name'=>'DSC8957', ...),
     820 *          ...
     821 *          )
     822 *
     823 *    - an associative array of a single field (key='...', value='...')
     824 *        array(
     825 *          'DSC8956' => 1,
     826 *          'DSC8957' => 2,
     827 *          ...
     828 *          )
     829 *
     830 * @since 2.6
     831 *
     832 * @param string $query
     833 * @param string $key_name
     834 * @param string $value_name
     835 * @return array
     836 */
     837function query2array($query, $key_name=null, $value_name=null)
     838{
     839  $result = pwg_query($query);
     840  $data = array();
     841
     842  if (isset($key_name))
     843  {
     844    if (isset($value_name))
     845    {
     846      while ($row = $result->fetch_assoc())
     847        $data[ $row[$key_name] ] = $row[$value_name];
     848    }
     849    else
     850    {
     851      while ($row = $result->fetch_assoc())
     852        $data[ $row[$key_name] ] = $row;
     853    }
     854  }
     855  else
     856  {
     857    if (isset($value_name))
     858    {
     859      while ($row = $result->fetch_assoc())
     860        $data[] = $row[$value_name];
     861    }
     862    else
     863    {
     864      while ($row = $result->fetch_assoc())
     865        $data[] = $row;
     866    }
     867  }
     868
     869  return $data;
     870}
     871
    802872?>
Note: See TracChangeset for help on using the changeset viewer.