Exemplo n.º 1
0
function object_update($data, $filter, &$object)
{
    if (count((array) $data) == 0) {
        return true;
    }
    $result = $object->db->exec('select * from ' . $object->tableName . ' where 0=1');
    $col_count = mysql_num_fields($result['rs']);
    $columnsList =& $object->_columns();
    for ($i = 0; $i < $col_count; $i++) {
        $column = mysql_fetch_field($result['rs'], $i);
        if (isset($data[$column->name])) {
            if ($column->type == 'unknown') {
                $column->type = 'real';
                //PHP_BUG http://bugs.php.net/bug.php?id=36069
            }
            if (!$columnsList[$column->name]['default'] && $columnsList[$column->name]['required'] && $data[$column->name] === null) {
                trigger_error($columnsList[$column->name]['label'] . '(' . $column->name . __(')不能为空。'), E_USER_WARNING);
                $GLOBALS['php_errormsg'] = $php_errormsg;
                return false;
            }
            if ($columnsList[$column->name]['vtype'] == 'positive' && $data[$column->name] < 0) {
                trigger_error($columnsList[$column->name]['label'] . '(' . $column->name . __(')一定要为正数。'), E_USER_WARNING);
                $GLOBALS['php_errormsg'] = $php_errormsg;
                return false;
            }
            if ($columnsList[$column->name]['default'] && $data[$column->name] === "") {
                $data[$column->name] = $columnsList[$column->name]['default'];
            }
            $UpdateValues[] = '`' . $column->name . '`=' . db_quotevalue($object->db, $data[$column->name], $column->type);
        }
    }
    if (count($UpdateValues) > 0) {
        $sql = 'update ' . $object->tableName . ' set ' . implode(',', $UpdateValues) . ' where ' . $object->_filter($filter);
        if ($object->db->exec($sql)) {
            if ($object->db->affect_row()) {
                return $object->db->affect_row();
            } else {
                return true;
            }
        } else {
            return false;
        }
    }
}
Exemplo n.º 2
0
function db_get_insert_sql($db, &$rs, &$data, $autoup = false)
{
    if (!$rs['rs']) {
        trigger_error('GetInsertSQL: ' . $rs['sql'] . ' error ', E_USER_WARNING);
        return false;
    }
    mysql_field_seek($rs['rs'], 0);
    if (is_object($data)) {
        $data = get_object_vars($data);
    }
    foreach ($data as $key => $value) {
        $data[strtolower($key)] = $value;
    }
    if (preg_match('/FROM\\s+([]0-9a-z_:"`.@[-]*)/is', $rs['sql'], $tableName)) {
        $tableName = $tableName[1];
    }
    if ($autoup) {
        $keyColumn = mysql_fetch_field($rs['rs']);
        if (!$data[strtolower($keyColumn->name)]) {
            $rs = $db->exec('SELECT MAX(' . $keyColumn->name . ') AS keyid FROM ' . $tableName);
            $result = $db->selectrow('SELECT MAX(' . $keyColumn->name . ') AS keyid FROM ' . $tableName);
            $data[$keyColumn->name] = $result['keyid'] + 1;
        }
    }
    $insertValues = array();
    $col_count = mysql_num_fields($rs['rs']);
    for ($i = 0; $i < $col_count; $i++) {
        $column = mysql_fetch_field($rs['rs'], $i);
        if (isset($data[$column->name])) {
            $insertValues[$column->name] = db_quotevalue($db, $data[$column->name], $column->type);
        }
    }
    $strValue = implode(',', $insertValues);
    $strFields = implode('`,`', array_keys($insertValues));
    mysql_field_seek($rs['rs'], 0);
    return 'INSERT INTO `' . $tableName . '` ( `' . $strFields . '` ) VALUES ( ' . $strValue . ' )';
}