added join parameter to the read too

This commit is contained in:
Ralf Becker 2005-04-10 21:15:33 +00:00
parent c84e492e91
commit f2be05f26f

View File

@ -234,9 +234,11 @@ class so_sql
* reads row matched by key and puts all cols in the data array * reads row matched by key and puts all cols in the data array
* *
* @param array $keys array with keys in form internalName => value, may be a scalar value if only one key * @param array $keys array with keys in form internalName => value, may be a scalar value if only one key
* @param string/array $extra_cols string or array of strings to be added to the SELECT, eg. "count(*) as num"
* @param string $join='' sql to do a join, added as is after the table-name, eg. ", table2 WHERE x=y" or
* @return array/boolean data if row could be retrived else False * @return array/boolean data if row could be retrived else False
*/ */
function read($keys) function read($keys,$extra_cols='',$join='')
{ {
if (!is_array($keys)) if (!is_array($keys))
{ {
@ -271,9 +273,10 @@ class so_sql
return False; return False;
} }
$this->db->select($this->table_name,'*',$query,__LINE__,__FILE__); $this->db->select($this->table_name,'*'.($extra_cols?','.(is_array($extra_cols)?implode(',',$extra_cols):$extra_cols):''),
$query,__LINE__,__FILE__,False,'',False,0,$join);
if (!$this->db->next_record()) if (!($row = $this->db->row(true)))
{ {
if ($this->autoinc_id) if ($this->autoinc_id)
{ {
@ -285,9 +288,18 @@ class so_sql
return False; return False;
} }
foreach ($this->db_cols as $db_col => $col) $cols = $this->db_cols;
if ($extra_cols) // extra columns to report
{ {
$this->data[$col] = $this->db->f($db_col); foreach(is_array($extra_cols) ? $extra_cols : array($extra_cols) as $col)
{
if (stristr($col,'as')) $col = preg_replace('/^.*as *([a-z0-9_]+) *$/i','\\1',$col);
$cols[$col] = $col;
}
}
foreach ($cols as $db_col => $col)
{
$this->data[$col] = $row[$db_col];
} }
$this->db2data(); $this->db2data();