0

PHPデータベースの構造に基づいてモデルを動的に生成するスクリプトがありMySQLます。でテーブルのリストを取得しmysql_list_tables()、各テーブルに対して でフィールドのリストを取得mysql_ list_ fields()し、テーブル構造に応じてメソッドを作成します。たとえば、整数フィールドが"order"定義されている場合、SELECTステートメントはその値によって順序付けられます。分野。

mysql_field_flags()byモデルに国際化サポートを追加するために返されるフィールドフラグを使用して、このアプローチを拡張したいと思います。私が望むのは、カスタム フラグ タイプを追加することです。既存のnot_nullなどに加えて、auto_incrementたとえば を呼び出すとi18n、フィールドにこのフラグが設定されているときはいつでも、メソッドを追加して値をフェッチ/追加する必要があることがわかります。翻訳表より。データベースを管理できるようにするには (フィールドの翻訳を有効または無効にするなど)、データベース管理インターフェイスphpMyAdminがカスタム フラグを自動的に取得できると便利です。

カスタム フラグを MySQL テーブル フィールドに追加して、それを phpMyAdmin と PHP で取得することはできますか?

4

1 に答える 1

1

私の知る限り、カスタムフラグをフィールドに追加する方法はありません。これを実装する方法の 1 つは、何らかのシリアル化されたデータを含む COMMENT 属性を使用することです。

CREATE TABLE test (
    id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
    color_id SMALLINT UNSIGNED NOT NULL COMMENT 'i18n'
);

テーブルとフィールドのデータを取得するために mysql_list_* 関数を使用しないことをお勧めします。代わりに、 INFORMATION_SCHEMAから選択する必要があります。また、 PDOまたはmysqliを使用することをお勧めします。運が良ければ、古い mysql 拡張機能は間もなく廃止される予定です。

あなたが使用する代わりにmysql_list_tables()-

SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'db_name'

そして、あなたが使用する代わりにmysql_list_fields()-

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'db_name'
AND TABLE_NAME = 'tbl_name'
于 2012-04-12T23:55:24.817 に答える