我可以获取数据库列';PHP中的s规范?

我可以获取数据库列';PHP中的s规范?,php,mysql,pdo,Php,Mysql,Pdo,我使用的是一个PHP框架,它的数据库模型类足够聪明,可以在模式更改时自行升级。他们通过一系列类似于以下伪代码的检查来实现这一点: 我是版本4。 函数升级版本() { 如果DB在此表中还没有“foo”列, 我是版本1。添加“foo”列。 如果DB在此表中还没有“bar”列, 我是版本2。添加“bar”列。 如果DB在此表中仍有一个不推荐使用的“fargle”, 我是第三版。把“法格尔”改名为“漱口”。 我现在升级到版本4。 } 我在最新的周期中遇到了一个障碍,因为我们必须做的一件事是扩展在以前的

我使用的是一个PHP框架,它的数据库模型类足够聪明,可以在模式更改时自行升级。他们通过一系列类似于以下伪代码的检查来实现这一点:

我是版本4。
函数升级版本()
{
如果DB在此表中还没有“foo”列,
我是版本1。添加“foo”列。
如果DB在此表中还没有“bar”列,
我是版本2。添加“bar”列。
如果DB在此表中仍有一个不推荐使用的“fargle”,
我是第三版。把“法格尔”改名为“漱口”。
我现在升级到版本4。
}
我在最新的周期中遇到了一个障碍,因为我们必须做的一件事是扩展在以前的版本中错误创建的列的大小。因此,为了使模型能够正确地升级自身,它不能仅仅基于检查列的存在而决定升级;它必须知道列的当前格式,并确定它是否仍然太短


我已经浏览了PHP和PDO文档,但还没有找到一种非实验性、非弃用的方法来可靠地获取这些信息。我能马上想到的唯一一种方法是尝试一个比原始长度长,但比新长度短的插入,然后选择结果;如果该列被截断,则该列太短,需要升级。不过,这似乎并不理想,因此我在这里寻找更好的替代方案。

您可以使用MySQL语句
描述myTable
将为您提供关于每个列的信息

您可以使用MySQL语句
描述myTable
将为您提供有关mysql中每个列的信息,您可以使用information\u schema。请参阅表中的
显示列
可能也会有所帮助。在mysql中,您可以使用信息模式。请参阅表中的
显示列
可能也会有所帮助。非常确定
description
是标准的。我不熟悉不支持它的RDBMS。
descriple
是MySQLTo knit pick中
SHOW COLUMNS的同义词,我认为descriple和EXPLAIN是同义词。MySQL参考说明:“descripe语句提供了类似于SHOW COLUMNS的信息。”。我最终使用了
SHOW COLUMNS
而不是
descripe
,但事实证明这是可以解析的。谢谢非常确定
description
是标准的。我不熟悉不支持它的RDBMS。
descriple
是MySQLTo knit pick中
SHOW COLUMNS的同义词,我认为descriple和EXPLAIN是同义词。MySQL参考说明:“descripe语句提供了类似于SHOW COLUMNS的信息。”。我最终使用了
SHOW COLUMNS
而不是
descripe
,但事实证明这是可以解析的。谢谢