0

テーブルから編集フォームを生成する関数を取得したいと考えています。主キーを非表示の入力に変換し、残りをテキストボックスに変換したいと思います。これは私が得ることができる限りです

function getform($table)  {
    $html= "";  
    $result = mysql_query("Select * From $table");
    if (!$result) {
       echo 'Could not run query: ' . mysql_error();
       // return from function here. don't know what value you need.
       return "";
    }
    $fieldnames = array();
    $fieldCount = mysql_num_fields($result);
    for( $i=0; $i<$fieldCount; $i++ ) {
       $fieldnames[] = ucfirst(mysql_field_name( $result , $i ));
    }

);
}

主キーとフィールドのサイズを取得する方法がわかりません

4

2 に答える 2

0

「DESCRIBE table」(「table」は db テーブルの名前) を使用して、テーブルの説明を取得します。これにより、次のような配列が得られます。この配列 (私の場合はユーザー テーブル) を再帰すると、テーブルについて必要なすべての情報が得られます。

Array
(
    [user] => Array
        (
            [0] => Array
                (
                    [Field] => id
                    [Type] => int(11)
                    [Null] => NO
                    [Key] => PRI
                    [Default] => 
                    [Extra] => auto_increment
                )

            [1] => Array
                (
                    [Field] => created
                    [Type] => int(11)
                    [Null] => NO
                    [Key] => 
                    [Default] => 
                    [Extra] => 
                )

            [2] => Array
                (
                    [Field] => updated
                    [Type] => int(11)
                    [Null] => NO
                    [Key] => 
                    [Default] => 
                    [Extra] => 
                )

            [3] => Array
                (
                    [Field] => enabled
                    [Type] => int(11)
                    [Null] => NO
                    [Key] => 
                    [Default] => 
                    [Extra] => 
                )

            [4] => Array
                (
                    [Field] => email
                    [Type] => varchar(255)
                    [Null] => YES
                    [Key] => 
                    [Default] => 
                    [Extra] => 
                )

            [5] => Array
                (
                    [Field] => password
                    [Type] => varchar(255)
                    [Null] => YES
                    [Key] => 
                    [Default] => 
                    [Extra] => 
                )

            [6] => Array
                (
                    [Field] => username
                    [Type] => varchar(255)
                    [Null] => YES
                    [Key] => 
                    [Default] => 
                    [Extra] => 
                )

            [7] => Array
                (
                    [Field] => name
                    [Type] => varchar(255)
                    [Null] => YES
                    [Key] => 
                    [Default] => 
                    [Extra] => 
                )

            [8] => Array
                (
                    [Field] => surname
                    [Type] => varchar(255)
                    [Null] => YES
                    [Key] => 
                    [Default] => 
                    [Extra] => 
                )

        )

)
于 2013-08-15T11:14:57.673 に答える
0

古いアプリケーションを維持していると仮定して、最初からやり直すように指示するのではなく、最初に使用したものを使用します。

ただし、これが新しいアプリである場合は、代わりに mysqli または PDO を学ぶために時間を費やす必要があります。

function getform($table)  {
    $html= "";  
    $result = mysql_query("Select * From $table");
    if (!$result) {
       echo 'Could not run query: ' . mysql_error();
       // return from function here. don't know what value you need.
       return "";
    }

    $fieldnames = array();
    for( $i=0; $i < mysql_num_fields($result); $i++ ) {
       $t = array();
       $t['name'] = mysql_field_name( $result , $i );
       $t['type'] = mysql_field_type( $result , $i );
       $t['len'] = mysql_field_len( $result, $i );
       $t['flags'] = mysql_field_flags( $result, $i ); 

       $fieldnames[] = $t;
    }
}

これにより、次のようなものが生成されます。

Array
(
    [0] => Array
        (
            [name] => ID
            [type] => int
            [len] => 5
            [flags] => not_null primary_key unique_key multiple_key unsigned auto_increment
        )

    [1] => Array
        (
            [name] => CallID
            [type] => int
            [len] => 7
            [flags] => multiple_key unsigned
        )

    [2] => Array
        (
            [name] => Complaint
            [type] => string
            [len] => 255
            [flags] => multiple_key
        )

    [3] => Array
        (
            [name] => Date
            [type] => date
            [len] => 10
            [flags] => multiple_key binary
        )
于 2013-08-15T11:41:41.167 に答える