注意:我目前正在使用mySQL标准函数,而不是mySQLi或PDO,所以任何解决方案都不会使用mySQLi或PDO。
如果在表上使用utf-8,则PHP函数mysql_field_len
不起作用,因为它为某些字段类型返回的值要高得多(实际长度的两倍或三倍)。一个已知问题。
如果您想尝试直接使用SQL查询执行此操作,例如
SELECT COLUMN_NAME, CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'xxxx'
AND COLUMN_NAME = 'yyy'
对于数字字段也是失败的,而是返回(NULL)。我在运行Windows Server的服务器上使用mySQL 5.1.73。我的理解是,这个问题不仅限于这个特定的旧Windows版本。
那么有人可以推荐一个防弹功能或查询来获取任何字段长度值来解决上面列出的两个问题吗?
答案 0 :(得分:1)
我看到另外一个选项:
DESCRIBE your_table_name;
然后,您只需使用正则表达式从Type
列获取数值。
DESCRIBE
是EXPLAIN
的同义词,也是SHOW COLUMNS
的快捷方式。
如果您只需要一列:
SHOW COLUMNS FROM your_table_name WHERE Field = 'your_column';
更多信息:
答案 1 :(得分:0)
所以我终于解决了这个问题。我使用mysql的SUBSTR函数来检索INFORMATION_SCHEMA中COLUMN_TYPE列的括号之间的值......
SELECT SUBSTR(COLUMN_TYPE,INSTR(COLUMN_TYPE,"(") + 1, INSTR(COLUMN_TYPE,")") - INSTR(COLUMN_TYPE,"(") - 1) AS temp FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'xxx' AND COLUMN_NAME = 'yyy'