使用 MySQL 字段标志作为 PHP 模型生成的参数


Use MySQL field flags as parameters for PHP model generation

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

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

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

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'