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

时间:2012-04-12 20:37:07

标签: php mysql localization phpmyadmin

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

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

我可以在MySQL表字段中添加自定义标志,并通过phpMyAdmin和PHP获取它们吗?

1 个答案:

答案 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中进行选择。我还建议使用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'