我有一个脚本,它根据我的PHP
数据库的结构动态生成我的MySQL
模型。我得到了mysql_list_tables()
的表列表,为每个表获取带有mysql_ list_ fields()
的字段列表,并根据表结构我相应地创建我的方法:例如,如果我找到整数字段{{ 1}}已定义,然后我的"order"
语句按该字段的值排序。
我想通过使用mysql_field_flags()
返回的字段标志来扩展此方法,以便为模型添加国际化支持。我想要的是添加一个自定义标志类型 - 除了现有的SELECT
,not_null
和其他 - 我会调用auto_increment
,然后每当一个字段设置了这个标志,我知道我需要添加方法来从转换表中获取/添加值。为了允许我管理数据库(例如,启用或禁用字段上的翻译),如果像i18n
这样的数据库管理界面可以自动获取我的自定义标志,那将会很棒。
我可以在MySQL表字段中添加自定义标志,并通过phpMyAdmin和PHP获取它们吗?
答案 0 :(得分:1)
AFAIK没有办法向字段添加自定义标志。实现这一点的一种方法是向我们提供带有某种序列化数据的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'