while ($i < $tbl_result_cnt) {
    list($tbl) = PMA_DBI_fetch_row($tbl_result);
    $fld_results = PMA_DBI_get_fields($db, $tbl);
    $fld_results_cnt = $fld_results ? count($fld_results) : 0;
    $j = 0;
    if (empty($tbl_names[$tbl]) && !empty($TableList)) {
        $tbl_names[$tbl] = '';
    } else {
        $tbl_names[$tbl] = ' selected="selected"';
    }
    //  end if
    // The fields list per selected tables
    if ($tbl_names[$tbl] == ' selected="selected"') {
        $fld[$k++] = PMA_backquote($tbl) . '.*';
        while ($j < $fld_results_cnt) {
            $fld[$k] = PMA_convert_display_charset($fld_results[$j]['Field']);
            $fld[$k] = PMA_backquote($tbl) . '.' . PMA_backquote($fld[$k]);
            // increase the width if necessary
            if (strlen($fld[$k]) > $form_column_width) {
                $form_column_width = strlen($fld[$k]);
            }
            //end if
            $k++;
            $j++;
        }
        // end while
    }
    // end if
    $i++;
}
// end if
Beispiel #2
0
/**
 * returns concatenated string of human readable field flags
 *
 * @uses    MYSQLI_UNIQUE_KEY_FLAG
 * @uses    MYSQLI_NUM_FLAG
 * @uses    MYSQLI_PART_KEY_FLAG
 * @uses    MYSQLI_TYPE_SET
 * @uses    MYSQLI_TIMESTAMP_FLAG
 * @uses    MYSQLI_AUTO_INCREMENT_FLAG
 * @uses    MYSQLI_TYPE_ENUM
 * @uses    MYSQLI_BINARY_FLAG
 * @uses    MYSQLI_ZEROFILL_FLAG
 * @uses    MYSQLI_UNSIGNED_FLAG
 * @uses    MYSQLI_BLOB_FLAG
 * @uses    MYSQLI_MULTIPLE_KEY_FLAG
 * @uses    MYSQLI_UNIQUE_KEY_FLAG
 * @uses    MYSQLI_PRI_KEY_FLAG
 * @uses    MYSQLI_NOT_NULL_FLAG
 * @uses    mysqli_fetch_field_direct()
 * @uses    PMA_convert_display_charset()
 * @param   object mysqli result    $result
 * @param   integer                 $i      field
 * @return  string                  field flags
 */
function PMA_DBI_field_flags($result, $i)
{
    $f = mysqli_fetch_field_direct($result, $i);
    $f = $f->flags;
    $flags = '';
    if ($f & MYSQLI_UNIQUE_KEY_FLAG) {
        $flags .= 'unique ';
    }
    if ($f & MYSQLI_NUM_FLAG) {
        $flags .= 'num ';
    }
    if ($f & MYSQLI_PART_KEY_FLAG) {
        $flags .= 'part_key ';
    }
    if ($f & MYSQLI_TYPE_SET) {
        $flags .= 'set ';
    }
    if ($f & MYSQLI_TIMESTAMP_FLAG) {
        $flags .= 'timestamp ';
    }
    if ($f & MYSQLI_AUTO_INCREMENT_FLAG) {
        $flags .= 'auto_increment ';
    }
    if ($f & MYSQLI_TYPE_ENUM) {
        $flags .= 'enum ';
    }
    // @TODO seems to be outdated
    if ($f & MYSQLI_BINARY_FLAG) {
        $flags .= 'binary ';
    }
    if ($f & MYSQLI_ZEROFILL_FLAG) {
        $flags .= 'zerofill ';
    }
    if ($f & MYSQLI_UNSIGNED_FLAG) {
        $flags .= 'unsigned ';
    }
    if ($f & MYSQLI_BLOB_FLAG) {
        $flags .= 'blob ';
    }
    if ($f & MYSQLI_MULTIPLE_KEY_FLAG) {
        $flags .= 'multiple_key ';
    }
    if ($f & MYSQLI_UNIQUE_KEY_FLAG) {
        $flags .= 'unique_key ';
    }
    if ($f & MYSQLI_PRI_KEY_FLAG) {
        $flags .= 'primary_key ';
    }
    if ($f & MYSQLI_NOT_NULL_FLAG) {
        $flags .= 'not_null ';
    }
    return PMA_convert_display_charset(trim($flags));
}
/**
 * Converts encoding according to current settings.
 *
 * @param   mixed    what to convert (string or array of strings or object returned by mysql_fetch_field)
 *
 * @return  string   converted string or array of strings
 *
 * @global  array    the configuration array
 * @global  boolean  whether recoding is allowed or not
 * @global  string   the current charset
 * @global  array    the charset to convert to
 *
 * @access  public
 *
 * @author  nijel
 */
function PMA_convert_display_charset($what)
{
    global $cfg, $allow_recoding, $charset, $convcharset;
    if (!(isset($cfg['AllowAnywhereRecoding']) && $cfg['AllowAnywhereRecoding'] && $allow_recoding) || $convcharset == $charset || defined('PMA_MYSQL_INT_VERSION') && PMA_MYSQL_INT_VERSION >= 40100) {
        // lem9: even if AllowAnywhereRecoding is TRUE, do not recode for MySQL >= 4.1.x since MySQL does the job
        return $what;
    } elseif (is_array($what)) {
        $result = array();
        foreach ($what as $key => $val) {
            if (is_string($val) || is_array($val)) {
                if (is_string($key)) {
                    $result[PMA_convert_display_charset($key)] = PMA_convert_display_charset($val);
                } else {
                    $result[$key] = PMA_convert_display_charset($val);
                }
            } else {
                $result[$key] = $val;
            }
        }
        // end while
        return $result;
    } elseif (is_string($what)) {
        switch ($GLOBALS['PMA_recoding_engine']) {
            case PMA_CHARSET_RECODE:
                return recode_string($convcharset . '..' . $charset, $what);
            case PMA_CHARSET_ICONV:
                return iconv($convcharset, $charset . $cfg['IconvExtraParams'], $what);
            case PMA_CHARSET_ICONV_AIX:
                return PMA_aix_iconv_wrapper($convcharset, $charset . $cfg['IconvExtraParams'], $what);
            case PMA_CHARSET_LIBICONV:
                return libiconv($convcharset, $charset . $GLOBALS['cfg']['IconvExtraParams'], $what);
            default:
                return $what;
        }
    } elseif (is_object($what)) {
        // isn't it object returned from mysql_fetch_field ?
        if (@is_string($what->name)) {
            $what->name = PMA_convert_display_charset($what->name);
        }
        if (@is_string($what->table)) {
            $what->table = PMA_convert_display_charset($what->table);
        }
        if (@is_string($what->Database)) {
            $what->Database = PMA_convert_display_charset($what->Database);
        }
        return $what;
    } else {
        // when we don't know what it is we don't touch it...
        return $what;
    }
}
Beispiel #4
0
function PMA_DBI_field_flags($result, $i)
{
    return PMA_convert_display_charset(mysql_field_flags($result, $i));
}
function PMA_mysql_tablename($result, $i)
{
    return PMA_convert_display_charset(mysql_tablename($result, $i));
}
Beispiel #6
0
function PMA_DBI_field_flags($result, $i)
{
    $f = mysqli_fetch_field_direct($result, $i);
    $f = $f->flags;
    $flags = '';
    if ($f & UNIQUE_FLAG) {
        $flags .= 'unique ';
    }
    if ($f & NUM_FLAG) {
        $flags .= 'num ';
    }
    if ($f & PART_KEY_FLAG) {
        $flags .= 'part_key ';
    }
    if ($f & SET_FLAG) {
        $flags .= 'set ';
    }
    if ($f & TIMESTAMP_FLAG) {
        $flags .= 'timestamp ';
    }
    if ($f & AUTO_INCREMENT_FLAG) {
        $flags .= 'auto_increment ';
    }
    if ($f & ENUM_FLAG) {
        $flags .= 'enum ';
    }
    if ($f & BINARY_FLAG) {
        $flags .= 'binary ';
    }
    if ($f & ZEROFILL_FLAG) {
        $flags .= 'zerofill ';
    }
    if ($f & UNSIGNED_FLAG) {
        $flags .= 'unsigned ';
    }
    if ($f & BLOB_FLAG) {
        $flags .= 'blob ';
    }
    if ($f & MULTIPLE_KEY_FLAG) {
        $flags .= 'multiple_key ';
    }
    if ($f & UNIQUE_KEY_FLAG) {
        $flags .= 'unique_key ';
    }
    if ($f & PRI_KEY_FLAG) {
        $flags .= 'primary_key ';
    }
    if ($f & NOT_NULL_FLAG) {
        $flags .= 'not_null ';
    }
    return PMA_convert_display_charset(trim($flags));
}
/**
 * returns concatenated string of human readable field flags
 *
 * @uses    MYSQLI_UNIQUE_KEY_FLAG
 * @uses    MYSQLI_NUM_FLAG
 * @uses    MYSQLI_PART_KEY_FLAG
 * @uses    MYSQLI_TYPE_SET
 * @uses    MYSQLI_TIMESTAMP_FLAG
 * @uses    MYSQLI_AUTO_INCREMENT_FLAG
 * @uses    MYSQLI_TYPE_ENUM
 * @uses    MYSQLI_ZEROFILL_FLAG
 * @uses    MYSQLI_UNSIGNED_FLAG
 * @uses    MYSQLI_BLOB_FLAG
 * @uses    MYSQLI_MULTIPLE_KEY_FLAG
 * @uses    MYSQLI_UNIQUE_KEY_FLAG
 * @uses    MYSQLI_PRI_KEY_FLAG
 * @uses    MYSQLI_NOT_NULL_FLAG
 * @uses    MYSQLI_TYPE_TINY_BLOB 
 * @uses    MYSQLI_TYPE_BLOB
 * @uses    MYSQLI_TYPE_MEDIUM_BLOB  
 * @uses    MYSQLI_TYPE_LONG_BLOB 
 * @uses    MYSQLI_TYPE_VAR_STRING  
 * @uses    MYSQLI_TYPE_STRING
 * @uses    mysqli_fetch_field_direct()
 * @uses    PMA_convert_display_charset()
 * @param   object mysqli result    $result
 * @param   integer                 $i      field
 * @return  string                  field flags
 */
function PMA_DBI_field_flags($result, $i)
{
    // This is missing from PHP 5.2.5, see http://bugs.php.net/bug.php?id=44846
    if (!defined('MYSQLI_ENUM_FLAG')) {
        define('MYSQLI_ENUM_FLAG', 256);
        // see MySQL source include/mysql_com.h
    }
    $f = mysqli_fetch_field_direct($result, $i);
    $type = $f->type;
    $charsetnr = $f->charsetnr;
    $f = $f->flags;
    $flags = '';
    if ($f & MYSQLI_UNIQUE_KEY_FLAG) {
        $flags .= 'unique ';
    }
    if ($f & MYSQLI_NUM_FLAG) {
        $flags .= 'num ';
    }
    if ($f & MYSQLI_PART_KEY_FLAG) {
        $flags .= 'part_key ';
    }
    if ($f & MYSQLI_SET_FLAG) {
        $flags .= 'set ';
    }
    if ($f & MYSQLI_TIMESTAMP_FLAG) {
        $flags .= 'timestamp ';
    }
    if ($f & MYSQLI_AUTO_INCREMENT_FLAG) {
        $flags .= 'auto_increment ';
    }
    if ($f & MYSQLI_ENUM_FLAG) {
        $flags .= 'enum ';
    }
    // See http://dev.mysql.com/doc/refman/6.0/en/c-api-datatypes.html:
    // to determine if a string is binary, we should not use MYSQLI_BINARY_FLAG
    // but instead the charsetnr member of the MYSQL_FIELD
    // structure. Watch out: some types like DATE returns 63 in charsetnr
    // so we have to check also the type.
    // Unfortunately there is no equivalent in the mysql extension.
    if (($type == MYSQLI_TYPE_TINY_BLOB || $type == MYSQLI_TYPE_BLOB || $type == MYSQLI_TYPE_MEDIUM_BLOB || $type == MYSQLI_TYPE_LONG_BLOB || $type == MYSQLI_TYPE_VAR_STRING || $type == MYSQLI_TYPE_STRING) && 63 == $charsetnr) {
        $flags .= 'binary ';
    }
    if ($f & MYSQLI_ZEROFILL_FLAG) {
        $flags .= 'zerofill ';
    }
    if ($f & MYSQLI_UNSIGNED_FLAG) {
        $flags .= 'unsigned ';
    }
    if ($f & MYSQLI_BLOB_FLAG) {
        $flags .= 'blob ';
    }
    if ($f & MYSQLI_MULTIPLE_KEY_FLAG) {
        $flags .= 'multiple_key ';
    }
    if ($f & MYSQLI_UNIQUE_KEY_FLAG) {
        $flags .= 'unique_key ';
    }
    if ($f & MYSQLI_PRI_KEY_FLAG) {
        $flags .= 'primary_key ';
    }
    if ($f & MYSQLI_NOT_NULL_FLAG) {
        $flags .= 'not_null ';
    }
    return PMA_convert_display_charset(trim($flags));
}
/**
 * Converts encoding according to current settings.
 *
 * @param   mixed    what to convert (string or array of strings or object returned by mysql_fetch_field)
 *
 * @return  string   converted string or array of strings
 *
 * @global  array    the configuration array
 * @global  boolean  whether recoding is allowed or not
 * @global  string   the current charset
 * @global  array    the charset to convert to
 *
 * @access  public
 *
 * @author  nijel
 */
function PMA_convert_display_charset($what)
{
    global $cfg, $allow_recoding, $charset, $convcharset;
    if (!(isset($cfg['AllowAnywhereRecoding']) && $cfg['AllowAnywhereRecoding'] && $allow_recoding) || $convcharset == $charset) {
        // rabus: if input and output charset are the same, we don't have to do anything...
        return $what;
    } else {
        if (is_array($what)) {
            $result = array();
            foreach ($what as $key => $val) {
                if (is_string($val) || is_array($val)) {
                    if (is_string($key)) {
                        $result[PMA_convert_display_charset($key)] = PMA_convert_display_charset($val);
                    } else {
                        $result[$key] = PMA_convert_display_charset($val);
                    }
                } else {
                    $result[$key] = $val;
                }
            }
            // end while
            return $result;
        } else {
            if (is_string($what)) {
                switch ($GLOBALS['PMA_recoding_engine']) {
                    case PMA_CHARSET_RECODE:
                        return recode_string($convcharset . '..' . $charset, $what);
                    case PMA_CHARSET_ICONV:
                        return iconv($convcharset, $charset . $cfg['IconvExtraParams'], $what);
                    case PMA_CHARSET_LIBICONV:
                        return libiconv($convcharset, $charset, $what);
                    default:
                        return $what;
                }
            } else {
                if (is_object($what)) {
                    // isn't it object returned from mysql_fetch_field ?
                    if (@is_string($what->name)) {
                        $what->name = PMA_convert_display_charset($what->name);
                    }
                    if (@is_string($what->table)) {
                        $what->table = PMA_convert_display_charset($what->table);
                    }
                    if (@is_string($what->Database)) {
                        $what->Database = PMA_convert_display_charset($what->Database);
                    }
                    return $what;
                } else {
                    // when we don't know what it is we don't touch it...
                    return $what;
                }
            }
        }
    }
}