<?
function sqldumptable($table) 
  {
    $tabledump = "DROP TABLE IF EXISTS $table;\n";
$tabledump .= "CREATE TABLE $table (\n"; $firstfield = 1; $this->query("SHOW FIELDS FROM $table");
//0->Field
//1->Type
//2->Null
//3->Default
//4->Extra
while ($field = @mysql_fetch_array($this->Query_ID)) 
{
if (!$firstfield) 
{
$tabledump .= ",\n";

else 
{
$firstfield = 0;
}
$tabledump .= "\t$field[0] $field[1]";
if ($field[2] == "YES") 
{
$tabledump .= " ";
}
else
{
$tabledump .= " NOT NULL";
} if (!empty($field["3"])) 
{
$tabledump .= " default '$field[3]'";
}
if ($field[4] != "") 
{
$tabledump .= " $field[4]";
}
}
        if ($this->Auto_Free) 
        {
          $this->free();
        }
    $this->query("SHOW KEYS FROM $table");
while ($key = @mysql_fetch_array($this->Query_ID)) 
{
$kname = $key['Key_name'];
if ($kname != "PRIMARY" and $key['Non_unique'] == 0) 
{
$kname="UNIQUE|$kname";
}
if(!is_array($index[$kname])) 
{
$index[$kname] = array();
}
$index[$kname][] = $key['Column_name'];
}
        if ($this->Auto_Free) 
        {
          $this->free();
        } while(list($kname, $columns) = @each($index))
{
$tabledump .= ",\n";
$colnames = implode($columns, ","); if($kname == "PRIMARY")
{
$tabledump .= "\tPRIMARY KEY ($colnames)";

else 
{
if (substr($kname,0,6) == "UNIQUE") 
{
$kname = substr($kname,7);
} $tabledump .= "\tKEY $kname ($colnames)"; }
} $tabledump .= "\n);\n\n";
return $tabledump
}
?>
我写的算法,一直用。给你分享!

解决方案 »

  1.   

    不好意思,上面的是我类里面的算法。这个很通用:
    <?
    function _create_table($table)
    {  
      $tabledump = "DROP TABLE IF EXISTS $table;\n";
    $tabledump .= "CREATE TABLE $table (\n"; $firstfield = 1; $result = mysql_query("SHOW FIELDS FROM $table");
    while ($field = mysql_fetch_array($result)) 
    {
    if (!$firstfield) 
    {
    $tabledump .= ",\n";

    else 
    {
    $firstfield = 0;
    }
    $tabledump .= "\t$field[0] $field[1]";
    if ($field[2] == "YES") 
    {
    $tabledump .= " ";
    }
    else
    {
    $tabledump .= " NOT NULL";
    } if (!empty($field["3"])) 
    {
    $tabledump .= " default '$field[3]'";
    }
    if ($field[4] != "") 
    {
    $tabledump .= " $field[4]";
    }
    }
            mysql_free_result($result);
        $result1 = mysql_query("SHOW KEYS FROM $table");
    while ($key = mysql_fetch_array($result1)) 
    {
    $kname = $key['Key_name'];
    if ($kname != "PRIMARY" and $key['Non_unique'] == 0) 
    {
    $kname="UNIQUE|$kname";
    }
    if(!is_array($index[$kname])) 
    {
    $index[$kname] = array();
    }
    $index[$kname][] = $key['Column_name'];
    }
            mysql_free_result($result1); while(list($kname, $columns) = @each($index))
    {
    $tabledump .= ",\n";
    $colnames = implode($columns, ","); if($kname == "PRIMARY")
    {
    $tabledump .= "\tPRIMARY KEY ($colnames)";

    else 
    {
    if (substr($kname,0,6) == "UNIQUE") 
    {
    $kname = substr($kname,7);
    } $tabledump .= "\tKEY $kname ($colnames)"; }
    } $tabledump .= "\n);\n\n";
    return $tabledump;
    }