0

我有一个脚本,PHP可以根据我的MySQL数据库结构动态生成我的模型。我得到表的列表mysql_list_tables(),对于每个表,得到字段的列表mysql_ list_ fields(),并且根据表结构,我相应地创建我的方法:例如,如果我找到"order"定义的整数字段,那么我的SELECT语句按该值排序场地。

我想通过使用返回的字段标志来扩展这种方法,以mysql_field_flags()向模型添加国际化支持。我想要的是添加一个自定义标志类型——除了现有not_nullauto_increment和其他的——例如我会调用i18n的,然后每当一个字段设置了这个标志时,我知道我需要添加方法来获取/添加值从翻译表。phpMyAdmin为了让我能够管理数据库(例如,启用或禁用字段翻译),如果数据库管理界面能够自动获取我的自定义标志,那就太好了。

我可以向 MySQL 表字段添加自定义标志,并让 phpMyAdmin 和 PHP 拾取它们吗?

4

1 回答 1

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中进行选择。我还建议使用PDOmysqli,如果运气好的话,旧的 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 回答