/** Save the current set of keys and values to the database. If this object is new (has no 'id' set), * an 'insert' query is done, and the resulting 'id' is set in the object. If the object is not new, then * an 'update' query is done. */ public function save() { /* We need to prepend the name of the database to all entries */ $name = $this->getName(); if ($this->isNew()) { /* Grab the keys and values from the array of data entries */ $arrKeys = array_keys($this->arrData); $arrValues = array_values($this->arrData); /* Format the keys properly */ foreach ($arrKeys as &$key) { if (!clsDB::isValidFieldName($key)) { throw new Exception(ERRORMSG_INVALID); } $key = strtolower($key); $key = "`{$name}_{$key}`"; } /* Format the values properly */ foreach ($arrValues as &$value) { $value = mysql_real_escape_string($value); $value = "'{$value}'"; } $strKeys = implode(',', $arrKeys); $strValues = implode(',', $arrValues); $SQL = "INSERT INTO `<<tbl><{$name}>>` ({$strKeys}) VALUES ({$strValues});"; $strID = clsDB::insertQuery($SQL); $this->setInteger('id', $strID); } else { $arrSets = array(); foreach ($this->arrData as $key => $value) { $key = strtolower($key); $value = mysql_real_escape_string($value); $arrSets[] = "`<<{$name}><{$key}>>`='{$value}'"; } $strSets = implode(',', $arrSets); $strID = $this->get('id'); $SQL = "UPDATE `<<tbl><{$name}>>` SET {$strSets} WHERE `<<{$name}><id>>`='{$strID}';"; clsDB::query($SQL); } }