Exemple #1
0
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 '';
    }
}
Exemple #2
0
 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);
 }