我有一个脚本,可以根据 MySQL
数据库的结构动态生成我的 PHP
模型。我使用 mysql_list_tables()
获取表列表,对于每个表,使用 mysql_ list_ fields()
获取字段列表,并根据表结构创建我的方法相应地:例如,如果我发现定义了整数字段“order”
,那么我的SELECT
语句将按该字段的值排序。
我想通过使用 mysql_field_flags()
返回的字段标志来扩展此方法通过模型添加国际化支持。我想要的是添加一个自定义标志类型 - 除了现有的 not_null
、auto_increment
等 - 我会调用 i18n
,那么每当一个字段设置了此标志时,我知道我需要添加方法来从转换表中获取/添加值。为了允许我管理数据库(例如启用或禁用字段上的翻译),如果像 phpMyAdmin
这样的数据库管理界面可以自动获取我的自定义标志,那就太好了。
我可以向 MySQL 表字段添加自定义标志,并让 phpMyAdmin 和 PHP 选取它们吗?
最佳答案
据我所知,无法向字段添加自定义标志。实现此目的的一种方法是使用带有某种序列化数据的 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'
关于php - 使用 MySQL 字段标志作为 PHP 模型生成的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10131420/