0

フィールドのコメントをphpで変更したいのですが、問題あり!!

他の列の機能を取得する必要があります:|

これは私のコードです(すべての列機能を取得します):

$query = "
        SELECT 
            *
            FROM information_schema.COLUMNS
                WHERE 
                    TABLE_SCHEMA = '$dbName' AND 
                    TABLE_NAME = '$tableName' AND 
                    COLUMN_NAME = '".$row->name."'";

    $result = mysql_query($query) or die($query.'<br>'.mysql_error());
    $tempRow = mysql_fetch_object($result);

これはコメントを変更する私のコードです

 $query = "ALTER TABLE `$tableName` 
            MODIFY  `".$row->name."` 
            ".$tempRow->COLUMN_TYPE." 
            DEFAULT ".$tempRow->COLUMN_DEFAULT."
            COMMENT '$comment'"   ;


        $result = mysql_query($query) or die($query.'<br>'.mysql_error());

しかし、問題は、outo increamment、主キーなど、いくつかの機能を失うことです...

すべての機能を記述する必要がなく、更新クエリのようにコメントを変更する方法はありますか?!! そうでない場合、このクエリをどのように修正する必要がありますか?!

4

2 に答える 2

1

申し訳ありませんが、1 つの機能だけを変更する方法はありません。列が持つすべての機能を常に指定する必要があります。そのため、列のすべての機能を反映するようにクエリを拡張してください。そのために必要なのは$tempRow.

于 2013-01-30T13:47:12.540 に答える
0
        if ($tempRow->IS_NULLABLE == "NO")
        {
            $nullStr =" Not null ";
        }else
        {
            $nullStr ="  null ";
        }            

        if (strlen($tempRow->COLUMN_DEFAULT) >0 )
        {
            $defaultStr = "DEFAULT ".$tempRow->COLUMN_DEFAULT;
        }else
        {
            $defaultStr ="  ";
        }

        if (strlen($tempRow->COLLATION_NAME )>0)
        {
            $collateStr = "collate " . $tempRow->COLLATION_NAME ;
        }
         $comment .= implode("|",$info);
        $query = "ALTER TABLE `$tableName` 
            MODIFY  `".$row->name."` 
            ".$tempRow->COLUMN_TYPE." 
            ".$nullStr."
            ".$extraStr."
            ".$defaultStr."
            ". $tempRow->EXTRA."
            ". $collateStr."

            COMMENT '$comment'"   ;
于 2013-02-02T07:00:52.670 に答える