maybe_drop_column

The timeline below displays how wordpress function maybe_drop_column has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.2

/**
 * Drops column from database table, if it exists.
 *
 * @since 1.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string $table_name  Database table name.
 * @param string $column_name Table column name.
 * @param string $drop_ddl    SQL statement to drop column.
 * @return bool True on success or if the column doesn't exist. False on failure.
 */
function maybe_drop_column($table_name, $column_name, $drop_ddl)
{
    global $wpdb;
    // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Cannot be prepared. Fetches columns for table names.
    foreach ($wpdb->get_col("DESC {$table_name}", 0) as $column) {
        if ($column === $column_name) {
            // Found it, so try to drop it.
            // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- No applicable variables for this query.
            $wpdb->query($drop_ddl);
            // We cannot directly tell whether this succeeded!
            // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Cannot be prepared. Fetches columns for table names.
            foreach ($wpdb->get_col("DESC {$table_name}", 0) as $column) {
                if ($column === $column_name) {
                    return false;
                }
            }
        }
    }
    // Else didn't find it.
    return true;
}

WordPress Version: 5.5

/**
 * Drops column from database table, if it exists.
 *
 * @since 1.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string $table_name  Database table name.
 * @param string $column_name Table column name.
 * @param string $drop_ddl    SQL statement to drop column.
 * @return bool True on success or if the column doesn't exist. False on failure.
 */
function maybe_drop_column($table_name, $column_name, $drop_ddl)
{
    global $wpdb;
    foreach ($wpdb->get_col("DESC {$table_name}", 0) as $column) {
        if ($column === $column_name) {
            // Found it, so try to drop it.
            $wpdb->query($drop_ddl);
            // We cannot directly tell that whether this succeeded!
            foreach ($wpdb->get_col("DESC {$table_name}", 0) as $column) {
                if ($column === $column_name) {
                    return false;
                }
            }
        }
    }
    // Else didn't find it.
    return true;
}

WordPress Version: 5.4

/**
 * Drop column from database table, if it exists.
 *
 * @since 1.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string $table_name Table name
 * @param string $column_name Column name
 * @param string $drop_ddl SQL statement to drop column.
 * @return bool True on success or if the column doesn't exist, false on failure.
 */
function maybe_drop_column($table_name, $column_name, $drop_ddl)
{
    global $wpdb;
    foreach ($wpdb->get_col("DESC {$table_name}", 0) as $column) {
        if ($column == $column_name) {
            // Found it, so try to drop it.
            $wpdb->query($drop_ddl);
            // We cannot directly tell that whether this succeeded!
            foreach ($wpdb->get_col("DESC {$table_name}", 0) as $column) {
                if ($column == $column_name) {
                    return false;
                }
            }
        }
    }
    // Else didn't find it.
    return true;
}

WordPress Version: 4.1

/**
 * Drop column from database table, if it exists.
 *
 * @since 1.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string $table_name Table name
 * @param string $column_name Column name
 * @param string $drop_ddl SQL statement to drop column.
 * @return bool False on failure, true on success or doesn't exist.
 */
function maybe_drop_column($table_name, $column_name, $drop_ddl)
{
    global $wpdb;
    foreach ($wpdb->get_col("DESC {$table_name}", 0) as $column) {
        if ($column == $column_name) {
            // Found it, so try to drop it.
            $wpdb->query($drop_ddl);
            // We cannot directly tell that whether this succeeded!
            foreach ($wpdb->get_col("DESC {$table_name}", 0) as $column) {
                if ($column == $column_name) {
                    return false;
                }
            }
        }
    }
    // Else didn't find it.
    return true;
}

WordPress Version: 4.0

/**
 * Drop column from database table, if it exists.
 *
 * @since 1.0.0
 *
 * @uses $wpdb
 *
 * @param string $table_name Table name
 * @param string $column_name Column name
 * @param string $drop_ddl SQL statement to drop column.
 * @return bool False on failure, true on success or doesn't exist.
 */
function maybe_drop_column($table_name, $column_name, $drop_ddl)
{
    global $wpdb;
    foreach ($wpdb->get_col("DESC {$table_name}", 0) as $column) {
        if ($column == $column_name) {
            // Found it, so try to drop it.
            $wpdb->query($drop_ddl);
            // We cannot directly tell that whether this succeeded!
            foreach ($wpdb->get_col("DESC {$table_name}", 0) as $column) {
                if ($column == $column_name) {
                    return false;
                }
            }
        }
    }
    // Else didn't find it.
    return true;
}

WordPress Version: 3.9

/**
 * Drop column from database table, if it exists.
 *
 * @since 1.0.0
 *
 * @uses $wpdb
 *
 * @param string $table_name Table name
 * @param string $column_name Column name
 * @param string $drop_ddl SQL statement to drop column.
 * @return bool False on failure, true on success or doesn't exist.
 */
function maybe_drop_column($table_name, $column_name, $drop_ddl)
{
    global $wpdb;
    foreach ($wpdb->get_col("DESC {$table_name}", 0) as $column) {
        if ($column == $column_name) {
            //found it try to drop it.
            $wpdb->query($drop_ddl);
            // we cannot directly tell that whether this succeeded!
            foreach ($wpdb->get_col("DESC {$table_name}", 0) as $column) {
                if ($column == $column_name) {
                    return false;
                }
            }
        }
    }
    // else didn't find it
    return true;
}

WordPress Version: 3.7

/**
 * Drop column from database table, if it exists.
 *
 * @since 1.0.0
 * @package WordPress
 * @subpackage Plugin
 * @uses $wpdb
 *
 * @param string $table_name Table name
 * @param string $column_name Column name
 * @param string $drop_ddl SQL statement to drop column.
 * @return bool False on failure, true on success or doesn't exist.
 */
function maybe_drop_column($table_name, $column_name, $drop_ddl)
{
    global $wpdb;
    foreach ($wpdb->get_col("DESC {$table_name}", 0) as $column) {
        if ($column == $column_name) {
            //found it try to drop it.
            $wpdb->query($drop_ddl);
            // we cannot directly tell that whether this succeeded!
            foreach ($wpdb->get_col("DESC {$table_name}", 0) as $column) {
                if ($column == $column_name) {
                    return false;
                }
            }
        }
    }
    // else didn't find it
    return true;
}