php - 我可以在 PHP 中获取数据库列的规范吗?

标签 php mysql pdo

我正在使用一个 PHP 框架,该框架的数据库模型类足够智能,可以在架构更改时进行 self 升级。他们在某种程度上通过检查类似于以下伪代码的检查列表来做到这一点:

I am version 4.

function UpgradeVersion()
{
    If the DB doesn't yet have a column "foo" in this table,
        I'm version 1. Add the "foo" column.
    If the DB doesn't yet have a column "bar" in this table,
        I'm version 2. Add the "bar" column.
    If the DB still has a deprecated "fargle" in this table,
        I'm version 3. Rename "fargle" to "gargle".
    I'm now up to version 4.
}

我在最新的周期中遇到了障碍,因为我们必须做的事情之一是扩大在先前版本中错误创建的列的大小。因此,为了让模型正确地 self 升级,它不能仅仅根据列是否存在的检查来决定升级;而是要根据列是否存在来决定升级。它必须知道该列的当前格式,并确定它是否仍然太短。

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

最佳答案

您可以使用 MySQL 语句 DESCRIBE myTable; 它将为您提供有关每列的信息

关于php - 我可以在 PHP 中获取数据库列的规范吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36460236/

相关文章:

php - 如果数组列表对象的日期(属性)相对于任何其他对象日期在 15 天内,则删除该对象

php - 为现有网站开发移动应用程序(Iphone、Blackberry、Android)

php - 在 php 中使用 PDO 类获取 num_rows 的问题

php - 如何使用PDO锁定sqlite数据库中的条目?

php 在执行后回显查询的实际语句

php - HTML 表单,将空白表单设置为 NULL

php - 转义 $_SESSION 用户名以便在 mysql 查询中使用的正确方法是什么?

mysql - 选择参与事件的 4 位用户个人资料图片 (mysql)

mysql concat 数据如果为 null 则结束,如果不为 null 则继续 concat

mysql - 使用mysql数据库中的日期代替ID