2012-04-12 7 views
0

MySQLデータベースの構造に基づいて、私のPHPモデルを動的に生成するスクリプトがあります。私はmysql_list_tables()のテーブルのリストを取得し、各テーブルについてはmysql_ list_ fields()のフィールドのリストを取得し、それに応じてメソッドを作成します。例えば、整数フィールド"order"が見つかった場合、SELECTステートメントはそのフィールドの値PHPモデル生成のパラメータとしてMySQLフィールドフラグを使用する

mysql_field_flags()から返されるフィールドフラグを使用して、モデルによる国際化サポートを追加することで、このアプローチを拡張したいと考えています。私が望むのは、既存のnot_nullauto_incrementなどのほかに、i18nという名前のカスタムフラグタイプを追加することです。フィールドにこのフラグが設定されている場合は、フェッチするメソッドを追加する必要があります。変換テーブルから値を追加します。データベースの管理を可能にするには(たとえば、フィールドで翻訳を有効または無効にする)、phpMyAdminのようなデータベース管理インターフェイスがカスタムフラグで自動的に選択できるようにすれば素晴らしいことでしょう。

カスタムテーブルをMySQLテーブルのフィールドに追加して、phpMyAdminとPHPで取り上げることはできますか?

答えて

1

AFAIKフィールドにカスタムフラグを追加する方法はありません。私は、テーブルとフィールドデータを取得するためのmysql_list_ *関数を使用しないことを助言する

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

- あなたがこれを実装できる一つの方法は、私たちにシリアライズされたデータのいくつかの種類とCOMMENT属性です。代わりにINFORMATION_SCHEMAから選択する必要があります。また、または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' 
+0

を私はおそらく実際に 'mysqli'を使用します。 'COMMENT'を使うのは良いアイデアですが、ハッキリと聞こえるかもしれません。私は、フィールド名の命名規則を使用する方がより信頼性の高い解決策になるかもしれないと考えています。 – Max

関連する問題