function db_get_update_sql(&$db, &$rs, $data, $InsertIfNoResult = false, $insertData = null, $ignore = false) { if (!is_resource($rs['rs'])) { trigger_error('GetUpdateSQL: ' . $rs['sql'] . ' error ', E_USER_ERROR); } mysql_data_seek($rs['rs'], 0); $row = mysql_fetch_assoc($rs['rs']); if ($InsertIfNoResult && !$row) { return db_get_insert_sql($db, $rs, $data); } if (preg_match('/FROM\\s+([]0-9a-z_:"`.@[-]*)/is', $rs['sql'], $tableName)) { $tableName = $tableName[1]; } if (is_object($data)) { $data = get_object_vars($data); } foreach ($data as $key => $value) { $data[strtolower($key)] = $value; } $UpdateValues = array(); $col_count = mysql_num_fields($rs['rs']); for ($i = 0; $i < $col_count; $i++) { $column = mysql_fetch_field($rs['rs'], $i); if (array_key_exists($column->name, $data) && ($ignore || $data[$column->name] !== $row[$column->name] || $column->type == 'bool')) { if (is_array($data[$column->name]) || is_object($data[$column->name])) { if (serialize($data[$column->name]) == $row[$column->name]) { continue; } } $UpdateValues[] = '`' . $column->name . '`=' . db_quotevalue($db, $data[$column->name], $column->type); } } mysql_field_seek($rs['rs'], 0); if (count($UpdateValues) > 0) { $whereClause = db_whereClause($rs['sql']); $UpdateValues = implode(',', $UpdateValues); $sql = 'UPDATE `' . $tableName . '` SET ' . $UpdateValues; if (strlen($whereClause) > 0) { $sql .= ' WHERE ' . $whereClause; } return $sql; } else { return ''; } }
function GetInsertSQL(&$rs, $data, $autoup = false) { if (!function_exists('db_get_insert_sql')) { require CORE_INCLUDE_DIR . '/core/db.tools.php'; } return db_get_insert_sql($this, $rs, $data, $autoup); }