Esempio n. 1
0
function getcolumn($creatsql)
{
    $creatsql = preg_replace("/ COMMENT '.*?'/i", '', $creatsql);
    preg_match("/\\((.+)\\)\\s*(ENGINE|TYPE)\\s*\\=/is", $creatsql, $matchs);
    $cols = explode("\n", $matchs[1]);
    $newcols = array();
    foreach ($cols as $value) {
        $value = trim($value);
        if (empty($value)) {
            continue;
        }
        $value = remakesql($value);
        if (substr($value, -1) == ',') {
            $value = substr($value, 0, -1);
        }
        $vs = explode(' ', $value);
        $cname = $vs[0];
        if ($cname == 'KEY' || $cname == 'INDEX' || $cname == 'UNIQUE') {
            $name_length = strlen($cname);
            if ($cname == 'UNIQUE') {
                $name_length = $name_length + 4;
            }
            $subvalue = trim(substr($value, $name_length));
            $subvs = explode(' ', $subvalue);
            $subcname = $subvs[0];
            $newcols[$cname][$subcname] = trim(substr($value, $name_length + 2 + strlen($subcname)));
        } elseif ($cname == 'PRIMARY') {
            $newcols[$cname] = trim(substr($value, 11));
        } else {
            $newcols[$cname] = trim(substr($value, strlen($cname)));
        }
    }
    return $newcols;
}
Esempio n. 2
0
function getcolumn($creatsql)
{
    preg_match("/\\((.+)\\)/is", $creatsql, $matchs);
    $cols = explode("\n", $matchs[1]);
    $newcols = array();
    foreach ($cols as $value) {
        $value = trim($value);
        if (empty($value)) {
            continue;
        }
        $value = remakesql($value);
        //特使字符替换
        if (substr($value, -1) == ',') {
            $value = substr($value, 0, -1);
        }
        //去掉末尾逗号
        $vs = explode(' ', $value);
        $cname = $vs[0];
        if (strtoupper($cname) == 'KEY') {
            $subvalue = trim(substr($value, 3));
            $subvs = explode(' ', $subvalue);
            $subcname = $subvs[0];
            $newcols['KEY'][$subcname] = trim(substr($value, 5 + strlen($subcname)));
        } elseif (strtoupper($cname) == 'INDEX') {
            $subvalue = trim(substr($value, 5));
            $subvs = explode(' ', $subvalue);
            $subcname = $subvs[0];
            $newcols['KEY'][$subcname] = trim(substr($value, 7 + strlen($subcname)));
        } elseif (strtoupper($cname) == 'PRIMARY') {
            $newcols['PRIMARY'] = trim(substr($value, 11));
        } else {
            $newcols[$cname] = trim(substr($value, strlen($cname)));
        }
    }
    return $newcols;
}