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

标签 php mysql localization phpmyadmin

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

我想通过使用 mysql_field_flags() 返回的字段标志来扩展此方法通过模型添加国际化支持。我想要的是添加一个自定义标志类型 - 除了现有的 not_nullauto_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 中进行选择。我还建议使用 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'

关于php - 使用 MySQL 字段标志作为 PHP 模型生成的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10131420/

相关文章:

localization - 在App Store中本地化现有应用的标题?

mysql - 使用随机数更新表行失败

php - SQL SELECT 查询没有结果也没有错误

grails - Grails是否根据域使用不同的本地化消息?

php - 您的 SQL 语法有误;检查与您的 MySQL 服务器版本对应的手册,了解在第 1 行的 '0' 附近使用的正确语法

php - 在 php 中请求选择选项

ios - 本地化的 ipad .nib 文件不起作用

php - 多个服务层和数据库事务

php - 顺序连续执行php脚本

javascript - 如何不执行隐藏表单